문제설명
- Return the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.
- 건초더미(haystack)에 있는 가장 처음에 발견되는 바늘(needle)의 인덱스를 반환하라. 바늘을 찾지 못한다면, -1을 반환한다.
풀이방법
- 문자열은 배열로 바꿔서 푸는게 현명하다. 스위프트의 문자열의 인덱스 접근과 서브스트링이 여간 까다로운게 아니기 때문이다.
- 검색하려는 대상인
needle
의 크기가 순회 중인 현재 인덱스를 넘어가서 비교하지 않도록 주의해야 한다.
func strStr(_ haystack: String, _ needle: String) -> Int {
if needle.isEmpty {
return 0
}
let length = needle.count
let s1Array = Array(haystack)
let s2Array = Array(needle)
for i in 0 ..< s1Array.count {
if i+length > s1Array.count {
return -1
}
if Array(s1Array[i..<(i+length)]) == s2Array {
return i
}
}
return -1
}
strStr("abcd", "bc")