字符串算法与谷歌网页搜索背后的数学原理
字符串重复拼接问题
在编程中,字符串拼接是常见操作。我们来探讨重复拼接多个字符串时,不同方法的性能差异。
假设要将 m 个字符串依次拼接到地址为 x 的字符串上。以 P - STRING - CONCAT 为例:
- P - STRING - CONCAT(x,“foo”) → x = “foo”
- P - STRING - CONCAT(x,“bar”) → x = “foobar”
- P - STRING - CONCAT(x,“baz”) → x = “foobarbaz”
随着拼接的进行, x 会越来越长,但每次拼接的字符串长度较短(设为 n 个字符)。对于 P - STRING - CONCAT ,主循环的步数由源字符串的字符数决定,这部分不受 x 长度的影响。而在主循环前计算字符串长度时, P - STRING - LENGTH 的时间复杂度是 $O(1)$,无论 x 多长,计算长度所需的步数都是常数。即便调用 P - STRING - LENGTH m 次,最终结果的时间复杂度仍是 $O(n)$。
再看 C - STRING - CONCAT </
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



