假设我们有两个字符串 s 和 t,我们必须检查是否可以通过交换 s 的字符来生成 t。
因此,如果输入类似于 s = "worldlloeh" t = "helloworld",那么输出将为 True,因为我们可以将字符从 "worldlloeh" 交换为 "helloworld"。
为了解决这个问题,我们将按照以下步骤操作 -
s_len := s 的大小,t_len := t 的大小
如果 s_len 与 t_len 不同,则
返回错误
freq := 将所有字符及其频率存储在 s 中的映射
对于 0 到 t_len 范围内的 i,请执行
返回错误
频率[t[i]] := 频率[t[i]] - 1
如果 freq[t[i]] < 0,则
返回真
让我们看看以下实现以获得更好的理解 -
from collections import defaultdict def solve(s, t): s_len = len(s) t_len = len(t) if (s_len != t_len): return False freq = defaultdict(int) for char in s : freq[char] += 1 for i in range(t_len) : freq[t[i]] -= 1 if freq[t[i]] < 0: return False return True s = "worldlloeh" t = "helloworld" print(solve(s, t))
"worldlloeh", "helloworld"输出结果
True