力扣面试150(34/150)
7.20 242. 有效的字母异位词
给定两个字符串 s
和 t
,编写一个函数来判断 t
是否是 s
的 字母异位词
我的思路:
- 遍历s到一个sMap,字母+次数的方式
- 遍历t,判断t中的char是否在sMap当中,
- 如果在的话次数-1,判断次数是否为0,如果为0就要在sMap当中删除这个键
- 如果不在的话直接返回false
- 遍历完之后如果sMap的size为0返回ture
我的代码:
var isAnagram = function(s, t) {// 1、遍历slet sMap = new Map();for(let i = 0 ; i < s.length ; i++){if(sMap.has(s[i])){// 如果存在let count = sMap.get(s[i]) + 1;sMap.set(s[i] , count);}else {// 不存在sMap.set(s[i] , 1);}}// 2、遍历tfor(let j = 0 ; j < t.length ; j++){if(sMap.has(t[j])){let count = sMap.get(t[j]) - 1;if(count === 0){sMap.delete(t[j]);}else {sMap.set(t[j] , count);}}else {return false;}}return sMap.size === 0;
};
总结:统计字符串 s 中每个字符的出现次数,然后与字符串 t 中的字符进行匹配和计数,最后检查 Map 是否为空来判断 s 和 t 是否为字母异位词。