计算String
的字符时countElements函数的运行时复杂度是多少?
文档说:
O(1)如果T.Index是RandomAccessIndexType;否则为O(N)。
什么是RandomAccessIndexType? String
是RandomAccessIndexType吗?
答案 0 :(得分:2)
根据文件:
可以通过任意数量的位置偏移的索引,并且可以测量到任何可到达值的距离,在O(1)
中
Swift字符串(不幸的是)没有实现它。他们使用BidirectionalIndexType
代替,这基本上使字符串成为双向链表,这意味着为了从位置n
到达位置m
的字符,它会浏览它们之间的所有元素。因此,字符串的countElements
函数具有复杂度O(n)