코테 문제 풀다가 원하는 문자열이 나오는 위치와 몇개가 나오는지에 따라 정렬해야하는 경우가 있었었습니다.
range(of:) -> Range?
주어진 문자열 내에서 특정 문자열의 범위를 알고 싶은 경우, range(of:)를 사용하여 문자열 안에 처음으로 일치하는 문자열의 범위를 알아낼 수 있습니다.
distance(from:to:) -> IndexDistance (IndexDistance = Int)
from, to 두 Index 사이의 거리를 알려줍니다.
let word = "AA"
var str = "BAAAAAAA"
var answer = [Int]()
var start = 0
while let range = str.range(of: word) {
start += leaf.distance(from: leaf.startIndex, to: range.lowerBound)
answer.append(start)
start += leaf.distance(from: leaf.startIndex, to: range.upperBound) - 1
leaf = String(leaf[range.upperBound...])
}
print(answer) // [1, 3, 4]