【JS】有效的字母异位词 两个字符串的字符构成是否相同

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。

s = “anagram”, t = “nagarma”, 输出: true
s = “rat”, t = “car” , 输出 false

进阶:
如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?


解法一:

使用 replace() 循环删除索引为 0 的相同的字符


var isAnagram = function(s, t) {
    var len=s.length
    for(var i=0;i

34 / 34 个通过测试用例
执行用时:68 ms

or

包含Unicode字符 , U+0057 W, U+0059 Y , U+005A Z

先替换 + 号,再循环替换


var isAnagram = function(s, t) {
    t=t.replace(/[+]/g,'');
    s=s.replace(/[+]/g,'');

    var len=s.length
    for(var i=0;i

解法二:

使用map() ,统计每个字符出现次数,对比每个字符次数有没有相等


var isAnagram = function(s, t) {
    if(s.length!=t.length) return false;
    let sarr={}, tarr={}
    for(let i in s){
        if(sarr[s[i]] >=1){
            sarr[s[i]]+=1
        }else{
            sarr[s[i]]=1
        }
    }
    for(let i in t){
        if(tarr[t[i]] >=1){
            tarr[t[i]]+=1
        }else{
            tarr[t[i]]=1
        }
    }
    for(let i in sarr){
        if(sarr[i]!=tarr[i]) return false;
    }
    return true;
};

34 / 34 个通过测试用例
状态:通过
执行用时:144 ms

你可能感兴趣的:(javascript)