28번 문제는 strStr 구현하기. 주어진 hayStack 문자열과 subString이 될 niddle 문자열을 받아 hayStack에 niddle이 있는 경우 첫번째 인덱스를, 없는 경우 -1을 반환하는 문제.
swift는 지원해주는 메서드가 많아서 왠지 내장 함수를 잘 쓰면 될 것 같단 생각에 hayStack.해놓고 메서드들을 유심히 들여다봤다.
설명을 보니 range(of:)가 subString에 대한 range를 반환해주는 것 같아 사용했다.
근데 return형이 Range<String.Index>형이어서 Range의 lowerBound를 사용하도록 구현했다. (시작 지점을 알기 위해서는 lowerBound를 사용, 끝 지점을 알려면 upperBound를 사용)
근데 이게 또 String.Index다 보니 반환형인 Int형과는 맞지를 않아서 String 메서드인 distance를 사용해 index를 뽑아 반환하도록 구현했다.
func strStr(_ haystack: String, _ needle: String) -> Int {
guard let index = haystack.range(of: needle)?.lowerBound else { return -1 }
let result = haystack.distance(from: haystack.startIndex, to: index)
return result
}
distance와 String.Index를 가지고 유용하게 써먹을 수 있는 방법인 것 같다. 기억해둬야지.
반응형
'Algorithm' 카테고리의 다른 글
Swift로 프로그래머스 문제 풀기 - 숫자 문자열과 영단어 (0) | 2022.07.06 |
---|---|
Swift로 프로그래머스 문제 풀기 - 로또의 최고 순위와 최저 순위 (0) | 2022.07.04 |
Swift로 Leet Code 문제 풀기 - 27. Remove Element (Easy) (0) | 2022.06.29 |
Swift로 Leet Code 문제 풀기 - 26. Remove Duplicates from Sorted Array (Easy) (0) | 2022.06.28 |
Swift로 Leet Code 문제 풀기 - 21. Merge Two Sorted Lists (Easy) (0) | 2022.06.27 |