访问Swift字符串中的字符的共识是什么?

时间:2016-06-20 06:55:08

标签: swift string

一个简单的例子是编写一个算法,确保没有两个连续的字符是相同的(aabbcc - > abacbc)。这需要重复使用单个字符访问。除了n字母字符串中的字符m的每次访问花费O(n)时间之外,默认实现非常麻烦。

什么被认为是最好的方法?

let letters = string.characters.map { $0 }

通过索引访问数组。

extension String {
    subscript(index: Int) -> Character {
        get {
            return characters[characters.index(startIndex, offsetBy: index)]
        }
        set {
            let firstIndex = characters.index(startIndex, offsetBy: index)
            let lastIndex = characters.index(firstIndex, offsetBy: 1)
            replaceSubrange(firstIndex..<lastIndex, with: String(newValue))
        }
    }
}

使用string[3]

或许还有一些我不知道的内置方式?我一直在使用map,因为它有O(1)访问时间,但O(n)内存使用情况。

0 个答案:

没有答案