Python any 和 in 和 for 循环的时间复杂度

标签 python time-complexity

以下代码行的时间复杂度(一般/最坏情况)是多少?

s1 = "any-string-of-large-size" 
s2 = "anyother-string-of-larger-size"  
if(any(x in s1 for x in s2)):
    return "YES"
return "NO"

此代码用于检查 s1 和 s2 是否有共同的字母。我还希望有任何其他方法来实现这一目标,这可能会更有效。
我发现使用此类库函数时很难计算时间复杂度。有人可以解释一下如何计算吗

最佳答案

最好和最坏的情况分别是 O(1)O(|s1|*|s2|),其中 |s1| code> 和 |s2| 表示两个字符串的长度。

事实上,您的代码可以重写为

for c2 in s2:
   for c1 in s1:
      if c1==c2:
          return "YES"
return "NO"

如果你只是想检查两个字符串是否共享一个公共(public)字符,你可以将其写为

if set(s1) & set(s2):
   return "YES"
return "NO"

这将具有相同的最坏情况时间复杂度O(|s1|*|s2|),但平均情况为O(min(|s1|,|s2|) )

关于Python any 和 in 和 for 循环的时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63995040/

相关文章:

algorithm - 分析时间复杂度时log base 2等于log base 3?

algorithm - 指数时间复杂度

java - 为什么 java 从具有大尺寸数字的第一个维度开始初始化二维数组需要很长时间?

python - PyQt 在 QDialog 的 QScrollArea 内部绘制

python - Django:存储图像数据库

python - Django Azure SQL 编程错误无效的对象名称

algorithm - 树相关问题的时间复杂度

java - java.util.Collections.sort() 方法的时间复杂度是多少?

python - 如何使用 TensorFlow 张量索引列表?

python - 使用 python 读取 MYSQL Db 返回一个元组,我需要将其转换为列表