【问题标题】:What is the time complexity of string slice? O(k) or O(n)字符串切片的时间复杂度是多少? O(k) 或 O(n)
【发布时间】: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) 上的字符串切片吗?

非常感谢!

【问题讨论】:

  • 为什么要把整个字符串转换成一个列表?
  • 如何分析 nk 非常不同的例子的行为?
  • 为什么它需要一个中间列表?这大概是在 C 中实现的,而不是在 Python 中,因此它可以直接访问字符串的内部表示并复制请求的子字符串。

标签: python string algorithm time-complexity slice


【解决方案1】:

相关代码是here,它是O(k),可以看到line 1628

result_buf = PyBytes_AS_STRING(result);
for (cur = start, i = 0; i < slicelength;cur += step, i++) {
        result_buf[i] = source_buf[cur];
}
return result;

【讨论】:

    猜你喜欢
    • 2019-07-27
    • 2018-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-25
    • 1970-01-01
    相关资源
    最近更新 更多