【发布时间】:2019-09-26 14:57:05
【问题描述】:
假设我有一个长度为n 的big_string,我想从其末尾删除一个长度为k 的子字符串
我们可以使用big_string[:-k],但这将是O(n-k),我们可以做得比这更好吗,比如inO(k)?
【问题讨论】:
-
big_string[:-k]不是O(n-k),是什么让你这么认为?它本质上是一个常量操作(O(1))——要么“在这个内存地址写一个空终止符”,要么“将定义数量的内存从一个地方复制到另一个地方并更新一个指针”或其他一些只执行一次的东西,无论n或k的值如何。 -
列表切片是在 python 中执行此操作的惯用方式,你真的找不到更有效的方法(或者如果你找到了,它会非常丑陋且非 pythonic)。如果您正在寻找原始速度,请使用 C 或其他东西。