給定兩個字符串 s 和 t ,編寫一個函數來判斷 t 是不是 s 的字母異位詞。javascript
輸入: s = "anagram", t = "nagaram" 輸出: true
輸入: s = "rat", t = "car" 輸出: false
說明:
你能夠假設字符串只包含小寫字母。java
關鍵詞:map算法
串s
爲map賦值,組成字母爲key,字母出現次數爲value串t
,判斷字母是否在map中,若在,map值減1,若不在,返回falsevar isAnagram = function(s, t) { if (s.length !== t.length) { return false; } let obj = {}; for (let i = 0; i < s.length; i ++) { let char = s.charAt(i); obj[char] = obj[char] ? obj[char] + 1 : 1 } for (let i = 0; i < t.length; i++) { let char = t.charAt(i); if (!obj[char]) { return false; } if (obj[char] > 0 ) { obj[char] --; } } return true; };
guanpengchn 畫解算法
關鍵詞:哈希映射函數
var isAnagram = function(s, t) { if (s.length !== t.length) { return false; } let alpha = new Array(26).fill(0); let acharCode = 'a'.charCodeAt(0); for(let i = 0; i < s.length; i++) { alpha[s.charCodeAt(i) - acharCode] ++; alpha[t.charCodeAt(i) - acharCode] --; } console.log(alpha); for(let i = 0; i < 26; i++) { if(alpha[i] != 0) { return false; } } return true; };
仍是大佬寫的好。spa
javascript的字符串相減結果非數值,如'a' - 'a' = NAN
,所以程序需獲取字符串的charCode。code
心理契約: 任什麼時候刻都存在於個體與組織之間的一系列沒有明文規定的指望。(履行->違背->打破)