检查一个字符串中字符的频率是否是Python中另一字符串中相同字符的频率的因数或倍数

假设我们有两个字符串s和t,我们必须检查s中一个字符的出现是t中的倍数还是一个因数。

因此,如果输入像s =“ xxyzzw” t =“ yyyxxxxzz”,则输出将为True,因为s中x的频率为2,而在t中为4,则sy仅出现一次,而在t中出现是三个y,在s和t中有相同数量的z,在s中有一个w,但在t中没有。

示例

让我们看下面的实现以更好地理解-

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

猜你喜欢