Skip to main content

2023-9-24

9-24

哈希表

题号242. 有效的字母异位词

题目给定两个字符串 *s**t* ,编写一个函数来判断 *t* 是否是 *s* 的字母异位词。

注意:*s**t* 中每个字符出现的次数都相同,则称 *s**t* 互为字母异位词。

function isAnagram(s: string, t: string): boolean {
const len1 = s.length;
const len2 = t.length;

// 如果两个字符串长度不同,直接返回 false
if (len1 !== len2) {
return false;
}

const dic: Map<string, number> = new Map();

// 统计字符串 s 中字符的出现次数
for (let i = 0; i < len1; i++) {
const char = s.charAt(i);
dic.set(char, (dic.get(char) || 0) + 1);
}

// 在字符串 t 中减少字符的出现次数
for (let i = 0; i < len2; i++) {
const char = t.charAt(i);
const count = dic.get(char);
if (count === undefined || count === 0) {
// 字符在 t 中出现次数大于在 s 中,或在 s 中没有出现过,直接返回 false
return false;
}
dic.set(char, count - 1);
}

// 遍历字典,如果所有字符的出现次数都为 0,则返回 true,否则返回 false
for (const count of dic.values()) {
if (count !== 0) {
return false;
}
}

return true;
}