给定两个字符串 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
心理契约: 任什么时候刻都存在于个体与组织之间的一系列没有明文规定的指望。(履行->违背->打破)