给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
示例 1:
输入: s = “anagram”, t = “nagaram”
输出: true
示例 2:
输入: s = “rat”, t = “car”
输出: false
说明:
你可以假设字符串只包含小写字母。
进阶:
如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?
来源:力扣(LeetCode)
链接:leetcode-cn.com/problem
这道题我是利用ES6 map来解决,异位数满足两个条件,一是长度相同,二是每个字符出现的次数应该相同,对于进阶中提到的unicode字符,可以用codePointAt()区分,具体代码如下:
/** * @param {string} s * @param {string} t * @return {boolean} */ var isAnagram = function(s, t) { if(s.length == t.length){ var ms = strToMap(s), mt = strToMap(t); for(let [key, value] of ms){ if(mt.get(key) != value){ return false; } } return true; }else{ return false; } }; function strToMap(str){ var m = new Map(); for(let s of str){ s = s.codePointAt(0); // 特殊处理Unicode字符 m.has(s) ? m.set(s, m.get(s) + 1) : m.set(s, 1); } return m; }
小伙伴们今天的学习就到这里了,如果觉得本文对你有帮助的话,欢迎转发,评论,收藏,点赞!!!