Pick One 버튼을 눌러 랜덤 문제를 하나 골랐다.
1528. Shuffle String
예제를 확인해 보았다.
보아하니 캐릭터의 실제 인덱스가 주어지고, 그에 맞게 정렬된 문자열을 반환하는 문제인 듯 하다.
O(n) 메모리 가지고는 쉽게 풀 수 있지만... 이 문제의 의도는 인메모리 정렬이니까... 한번 스캔하면서 제자리가 아닌 애들은 제자리를 찾을 때까지 스왑을 해주면 된다.
func restoreString(_ s: String, _ indices: [Int]) -> String {
var s = Array(s), indices = indices
for i in 0..<s.count {
var j = indices[i]
while i != j {
s.swapAt(i, j)
indices.swapAt(i, j)
j = indices[i]
}
}
return String(s)
}