Valid Anagram 是 LeetCode 上的一道经典算法题。这道题主要考察我们对字符串和哈希表的理解。

题目描述

给定两个字符串 st,编写一个函数来判断两个字符串是否是字母异位词。

字母异位词 指的是两个单词按字母顺序组成的字符完全相同,只是顺序不同。

示例:

输入: s = "anagram", t = "nagaram"
输出: true

输入: s = "rat", t = "car"
输出: false

解题思路

方法一:排序

  1. 将两个字符串分别排序。
  2. 比较排序后的字符串是否相同。

方法二:哈希表

  1. 创建一个长度为 26 的数组(假设只考虑英文字母)。
  2. 遍历字符串 st,分别对每个字符进行计数。
  3. 比较两个数组的计数是否相同。

代码示例

以下是一个使用哈希表方法的 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