题目

点击前往

  • 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
  • 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。

示例 1:

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

示例 2:

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

解题思路

  • 利用哈希表。
  • 首先遍历s,将组成s的字符以及其出现的次数用哈希表表示。
  • 然后遍历t,将哈希表中存在的值进行减操作。
  • 如果两者互为字母异位词,那么哈希表中所有value均为0。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/**
* @param {string} s
* @param {string} t
* @return {boolean}
*/
var isAnagram = function(s, t) {
if(s.length !== t.length) return false;
let hashmap = new Map();
for(let i of s){
if(!hashmap.has(i)){
hashmap.set(i,1);
}else{
let val = hashmap.get(i)+1;
hashmap.set(i,val);
}
}
for(let i of t){
if(hashmap.has(i)){
let val = hashmap.get(i)-1;
hashmap.set(i,val);
}else{
return false
}
}
for (let val of hashmap.values()) {
if(val!==0) return false;
}
return true;
};