【发布时间】:2021-10-29 22:24:32
【问题描述】:
我需要删除string1 中存在的string2 中的字符。这里string1 和string2 只有小写字符a-z,条件是string1 的长度每次都会更大。
我使用的是in 运算符:
def removeChars (string1, string2):
for char in string2:
if char in string1:
string1 = string1.replace(char, '')
return string1
但我在 Stack Overflow 上读到了一个 answer,上面写着:
对于 list、tuple、set、frozenset、dict 或 collections.deque 等容器类型,表达式
x in y等价于any(x is e or x == e for e in y)。
这意味着in 运算符在幕后使用for 循环。
所以我的问题是,在我的代码中的for 循环中,我是否应该考虑使用嵌套的for 循环,因为in 运算符在后台使用for 循环?如果是,这个程序的时间复杂度是多少?
【问题讨论】:
-
你可能会觉得this很有趣。
-
"这意味着 'in' 运算符在幕后使用 for 循环。" 不,它没有。这个警告只是关于语义。例如,
dict或set不涉及循环,而是基于哈希的查找。它的重点是in将首先检查身份作为优化然后相等。 -
您是在询问一般的
in还是专门询问字符串? -
在这种特殊情况,是的,字符串之间的
in将涉及线性时间算法