Valid Anagram 是 LeetCode 上的一道经典算法题。这道题主要考察我们对字符串和哈希表的理解。
题目描述
给定两个字符串 s
和 t
,编写一个函数来判断两个字符串是否是字母异位词。
字母异位词 指的是两个单词按字母顺序组成的字符完全相同,只是顺序不同。
示例:
输入: s = "anagram", t = "nagaram"
输出: true
输入: s = "rat", t = "car"
输出: false
解题思路
方法一:排序
- 将两个字符串分别排序。
- 比较排序后的字符串是否相同。
方法二:哈希表
- 创建一个长度为 26 的数组(假设只考虑英文字母)。
- 遍历字符串
s
和t
,分别对每个字符进行计数。 - 比较两个数组的计数是否相同。
代码示例
以下是一个使用哈希表方法的 Python 代码示例:
def isAnagram(s: str, t: str) -> bool:
if len(s) != len(t):
return False
count = [0] * 26
for i in range(len(s)):
count[ord(s[i]) - ord('a')] += 1
count[ord(t[i]) - ord('a')] -= 1
return all(x == 0 for x in count)
扩展阅读
如果你对 LeetCode 的其他算法题感兴趣,可以访问我们的 LeetCode 算法题解 页面。
图片
LeetCode Logo