swift - 获取不同表示形式的字符串长度的运行时复杂性

标签 swift swift2 string-length

在 Swift 2 中,给定一个字符串 s,这些语句的运行时复杂度是多少:

s.characters.count
s.endIndex
s.utf8.count
s.utf16.count
s.unicodeScalars.count

另外,如果我知道一个字符串仅包含字母,那么获取第 n 个字符的最有效方法是什么?

最佳答案

好吧,我正在尝试回答我自己的问题。如果我错了,请随时纠正我。

s.characters.count  // O(N)
s.endIndex // O(1)
s.utf8.count // O(N)
s.utf16.count // O(N)
s.unicodeScalars.count // O(N)

苹果的documentation on CollectionType.count表示“复杂度:如果 Index 符合 RandomAccessIndexType,则为 O(1);否则为 O(N)。”由于 CharacterViewUnicodeScalarViewUTF16ViewUTF8ViewIndex 都不符合RandomAccessIndexType,访问它们的次数都是 O(N)。

关于swift - 获取不同表示形式的字符串长度的运行时复杂性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33094432/

相关文章:

ios - 如何快速关闭消息应用程序?

ios - 如何在选项卡栏 Controller 中更新选项卡 View

swift - 类型 'String' 的值没有成员 'characterAtIndex'

swift - MacOS 状态栏应用程序显示菜单并使用 swift 3 单击时运行功能

swift - 无法将 type() 的值转换为 Swift 2 中的闭包结果类型 NSDictionary

ios - Swift 2.0 错误从 '[NSIndexPath]?' 向下转换为 '[indexpath]' 仅解包可选

jquery - 根据字符数动态更改字体大小

macos - 自动布局错误 - 无法同时满足约束

c++ - 计算字符串 C++ 中字符数的标准函数

MySQL length() 没有给出正确的字符数