檢查Python中一個字串中字元的頻率是否是另一個字串中相同字元頻率的因子或倍數


假設我們有兩個字串s和t,我們必須檢查s中字元的出現次數是否是t中字元出現次數的倍數或因子。

因此,如果輸入類似於s = "xxyzzw" t = "yyyxxxxzz",則輸出為True,因為s中x的頻率為2,t中為4;s中y只出現一次,但t中有三個y;s和t中z的個數相同;s中有一個w,但t中沒有。

為了解決這個問題,我們將遵循以下步驟:

  • s_freq := 包含s中所有字元及其頻率的對映
  • t_freq := 包含t中所有字元及其頻率的對映
  • 對於s_freq中的每個字元ch:
    • 如果ch不在t_freq中,則
      • 進行下一次迭代
    • 如果t_freq[ch]可以被s_freq[ch]整除,或者s_freq[ch]可以被t_freq[ch]整除,則
      • 進行下一次迭代
    • 否則,
      • 返回False
  • 返回True

示例

讓我們看看下面的實現以更好地理解:

 線上演示

from collections import defaultdict
def solve(s, t):
   s_freq = defaultdict(int)
   t_freq = defaultdict(int)
   for i in range(0, len(s)):
      s_freq[s[i]] += 1
   for i in range(0, len(t)):
      t_freq[t[i]] += 1
   for ch in s_freq:
      if ch not in t_freq:
         continue
      if t_freq[ch] % s_freq[ch] == 0 or s_freq[ch] % t_freq[ch] == 0:
         continue
      else:
         return False
   return True
s = "xxyzzw"
t = "yyyxxxxzz"
print(solve(s, t))

輸入

"xxyzzw", "yyyxxxxzz"

輸出

True

更新於:2021年1月18日

161 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.