📅  最后修改于: 2023-12-03 15:40:35.798000             🧑  作者: Mango
给定两个字符串 s
和 t
,编写一个函数来判断 t
是否是 s
的一个字母异位词(即 t
是否可以由使用任意次数的 s
的字符组成)。
输入:
s = "anagram", t = "nagaram"
输出:
True
可以使用哈希表来解决问题。
s
中每个字符出现的次数。t
,对于每个字符,如果在哈希表中出现,就将它的次数减一。否则将返回False。t
后,哈希表中的每个值都为 0,就说明 t
可以由使用任意次数的 s
的字符组成,返回True。否则,返回False。Python实现:
def isAnagram(s: str, t: str) -> bool:
if len(s) != len(t):
return False
hash_table = {}
for c in s:
if c in hash_table:
hash_table[c] += 1
else:
hash_table[c] = 1
for c in t:
if c in hash_table:
if hash_table[c] > 0:
hash_table[c] -= 1
else:
return False
else:
return False
return all(x == 0 for x in hash_table.values())
本题考察哈希表的使用,根据题目意思,使用哈希表可以记录每个字符的出现次数,最后判断是否可以由使用任意次数的 s
的字符组成。时间复杂度为 $O(N)$,空间复杂度为 $O(N)$。