亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python any 和 in 和 for 循環的時間復雜度

Python any 和 in 和 for 循環的時間復雜度

夢里花落0921 2023-08-22 16:32:41
以下代碼行的時間復雜度(一般/最壞情況)是多少?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 是否有共同的字母。我還希望有任何其他方法來實現這一目標,這可能會更有效。我發現使用此類庫函數時很難計算時間復雜度。有人還可以解釋一下如何計算嗎
查看完整描述

2 回答

?
精慕HU

TA貢獻1845條經驗 獲得超8個贊

最好和最壞的情況分別是O(1)和O(|s1|*|s2|),其中|s1|和|s2|表示兩個字符串的長度。


事實上,你的代碼可以重寫為


for c2 in s2:

   for c1 in s1:

      if c1==c2:

          return "YES"

return "NO"

如果您只想檢查兩個字符串是否共享一個公共字符,您可以將其寫為


if set(s1) & set(s2):

   return "YES"

return "NO"

這將具有相同的最壞情況時間復雜度O(|s1|*|s2|),但平均情況是O(min(|s1|,|s2|)。


查看完整回答
反對 回復 2023-08-22
?
慕慕森

TA貢獻1856條經驗 獲得超17個贊

(in)關鍵字的時間復雜度一般為O(N)。所以 s2 中的 x 是直接的 O(N)。由此得出總體復雜度為 O(N^2)。



查看完整回答
反對 回復 2023-08-22
  • 2 回答
  • 0 關注
  • 1492 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號