当前位置: 面试刷题>> 有效的字母异位词(经典算法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
```
以上代码示例均展示了如何判断两个字符串是否为字母异位词。通过遍历字符串并使用计数数组来记录每个字符出现的次数差异,最后检查计数数组是否全为零来判断是否为字母异位词。