Leetcode 를 풀어보았다.

a-paka·2022년 2월 20일
0

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)
}

profile
iOS Engineer

0개의 댓글