【发布时间】:2020-07-15 20:00:28
【问题描述】:
python str slice的时间复杂度是O(k)还是O(n)?
我正在阅读的答案表明它的 O(k) 但我不明白如何。
例如
my_str = "thisismystringfortesting"
sub_str = my_str[3:10]
我理解它只提取(k)个字符,但操作不是必须在切片之前先将整个字符串转换为列表吗?我的思考过程是整个转换单独将字符串放入列表将花费 O(n)。除非只有部分字符串被转换成列表?
那么有人可以解释一下 Python O(k) 或 O(n) 上的字符串切片吗?
非常感谢!
【问题讨论】:
-
为什么要把整个字符串转换成一个列表?
-
如何分析
n和k非常不同的例子的行为? -
为什么它需要一个中间列表?这大概是在 C 中实现的,而不是在 Python 中,因此它可以直接访问字符串的内部表示并复制请求的子字符串。
标签: python string algorithm time-complexity slice