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 是否為字母異位詞。