当前位置: 面试刷题>> 有效的字母异位词(经典算法150题)


### 题目描述 给定两个字符串 `s` 和 `t`,编写一个函数来判断 `t` 是否是 `s` 的一个字母异位词。字母异位词是指两个字符串中字符出现的次数完全相同,但字符出现的顺序可以不同。 **示例 1**: ``` 输入: s = "anagram", t = "nagaram" 输出: true ``` **示例 2**: ``` 输入: s = "rat", t = "car" 输出: false ``` ### PHP 代码示例 ```php function isAnagram($s, $t) { if (strlen($s) !== strlen($t)) { return false; } $count = array_fill(0, 26, 0); // 初始化计数数组,假设只包含小写字母 for ($i = 0; $i < strlen($s); $i++) { $count[ord($s[$i]) - ord('a')]++; // 对s中的字符进行计数 $count[ord($t[$i]) - ord('a')]--; // 对t中的字符进行减数 } for ($i = 0; $i < 26; $i++) { if ($count[$i] !== 0) { return false; } } return true; } // 示例调用 echo isAnagram("anagram", "nagaram") ? "true" : "false"; // 输出 true echo isAnagram("rat", "car") ? "true" : "false"; // 输出 false ``` ### Python 代码示例 ```python def isAnagram(s: str, t: str) -> bool: if len(s) != len(t): return False count = [0] * 26 # 初始化计数数组,假设只包含小写字母 for char in s: count[ord(char) - ord('a')] += 1 for char in t: count[ord(char) - ord('a')] -= 1 return all(x == 0 for x in count) # 示例调用 print(isAnagram("anagram", "nagaram")) # 输出 True print(isAnagram("rat", "car")) # 输出 False ``` ### JavaScript 代码示例 ```javascript function isAnagram(s, t) { if (s.length !== t.length) { return false; } let count = new Array(26).fill(0); // 初始化计数数组,假设只包含小写字母 for (let i = 0; i < s.length; i++) { const indexS = s.charCodeAt(i) - 'a'.charCodeAt(0); const indexT = t.charCodeAt(i) - 'a'.charCodeAt(0); if (indexS >= 0 && indexS < 26) { count[indexS]++; } if (indexT >= 0 && indexT < 26) { count[indexT]--; } } for (let i = 0; i < 26; i++) { if (count[i] !== 0) { return false; } } return true; } // 示例调用 console.log(isAnagram("anagram", "nagaram")); // 输出 true console.log(isAnagram("rat", "car")); // 输出 false ``` 以上代码示例均展示了如何判断两个字符串是否为字母异位词。通过遍历字符串并使用计数数组来记录每个字符出现的次数差异,最后检查计数数组是否全为零来判断是否为字母异位词。
推荐面试题