적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

Algorithm/참고

[Swift] String 문자열 다루기

hongssup_ 2022. 1. 10. 10:29
반응형

1. 문자열 단순구현 유형

ex) 카카오 기출문제 - 신규 아이디 추천 (7단계에 걸쳐 사용자가 만드려는 아이디 규칙에 따라 수정해 새로운 아이디 추천)

기본 String 관련 함수들 잘 정리해두고 복습

equals length uppercase lowercase

indexof 문자열 내 다른 문자열 존재하는지 판단할 때 

substring 스트링 일부 추출

replace 문자열 일부 찾아 대체 - replaceoccurencesof

trim 앞뒤 공백 제거 함수

compareTo 두 문자열의 아스키 순서 비교 (알파벳 순서 비교)

split containts charAt startsWith endsWith

 

2. 문자열 + 기타 알고리즘 유형(해시, 정렬, DFS 등)

ex) 카카오 문제 신고 결과 받기

문자열 parsing => indexOf + substring 사용

+ 해시

 

 

참고 : 개발자로 취직하기

 

.first / .last :Character?

The first element of the collection.

 

dropFirst() O(1)

dropLast() O(1)

func dropFirst(_ k: Int = 1) -> Substring
let str = "Hello World"
let substring = str.dropFirst(5)
let string = String(substring)
print(string) //" World"
print(String(str.dropFirst())) //"ello World"
print(String(str.dropFirst(20))) //""

String에 dropFirst() / dropLast() 함수를 적용하면 결과값이 Substring으로 반환된다. 

따라서 변환 후 String형식으로 사용하고 싶다면 Sutstring을 String 타입으로 다시 변환을 해주어야 한다. 

그리고 실제 변환하려는 String의 길이보다 dropFirst() / dropLast() 속에 들어가는 인자의 크기가 더 크다 하더라도 에러가 나지 않고 그냥 빈 String ""를 반환한다. 

 

split()

func split(separator: Character) -> [Substring]

Substring으로 반환이 되기 때문에 String으로 사용하려면 형 변환을 해주어야 한다. 

let str = "apple orange"
print(str.split(separator: " ")[0]) //apple
print(str.split(separator: " ")[1]) //orange

let arr = str.split(separator: " ").map { String($0) }
print(arr[0]) //apple
print(arr[1]) //orange

 

prefix / suffix O(1)

func prefix(_ maxLength: Int) -> Substring
func suffix(_ maxLength: Int) -> Substring

prefix( ) : 앞에서부터 몇글자 만큼의 Substring 반환

suffix( ) : 뒤에서부터 몇글자 만큼의 Substring 반환 

func hasPrefix(_ prefix: String) -> Bool
func hasSuffix(_ suffix: String) -> Bool

hasPrefix( ) : 특정 prefix(문자열) 로 시작하는 문자열인지 판단하여 Bool 값을 반환

hasSuffix( ) : 특정 suffix(문자열) 로 끝나는 문자열인지 판단하여 Bool 값을 반환

let str = "abcdefj"
print(str.prefix(3)) //abc
print(str.hasSuffix("efj")) //true
728x90
반응형

'Algorithm > 참고' 카테고리의 다른 글

[Swift] 2진수 변환 radix  (0) 2022.02.09
[Swift] reversed()  (1) 2022.01.16
[Swift] Array 배열 관련 함수들  (0) 2022.01.06
Swift 정규식 NSRegularExpression  (0) 2022.01.04
[Swift iOS] Dictionary 사용법 + dictionaries inside array  (0) 2021.09.10