给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
示例 1:
输入: s = “anagram”, t = “nagaram”
输出: true
示例 2:
输入: s = “rat”, t = “car”
输出: false
说明:
你可以假设字符串只包含小写字母。
进阶:
如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-anagram
这道题我是利用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;
}
小伙伴们今天的学习就到这里了,如果觉得本文对你有帮助的话,欢迎转发,评论,收藏,点赞!!!
每天学习进步一点点,就是领先的开始。如果想继续提高,欢迎关注我,或者关注公众号”祯民讲前端“。大量前端技术文章,面试资料,技巧等助你更进一步!