检查2个字符串中的Anagram

Mar*_*tos 1 javascript

我创建了一个函数来检查2个单词是否是字谜,但我想让它变得更好.在if语句中我觉得计数器的声明不太好,如果有人有更好的解决方案会很棒.

function checkAnagram(string1, string2){

        if(string1.length !== string2.length){
            return false;
        }

        for(var i = 0; i < string1.length; i++){

            if(count <= 0){

                return false;
            }
            var count = 0;

            for(var t = 0; t < string2.length; t++){

                //counter = 0

                if(string2[t].toLowerCase() == string1[i].toLowerCase()){
                    //counter++;
                    count++;
                    break;
                }


            }

        }

        return true;
    }
Run Code Online (Sandbox Code Playgroud)

kem*_*002 9

这是一种更简单的方法:

var s1 = "test"
var s2 = "tset"

function testAnagram (s1, s2){

 if(!s1 || !s2 || s1.length !== s2.length){return false;}

 var lS1 = s1.toLowerCase();
 var lS2 = s2.toLowerCase();

 if(lS1 === lS2) {return false;}

 var rS1 = lS1.split('').sort().join('');
 var rS2 = lS2.split('').sort().join('');

 return rS1 === rS2;
}



var result = testAnagram(s1, s2);

alert(result);
Run Code Online (Sandbox Code Playgroud)


小智 6

对于字符串'aabb'和'abcc',您的代码返回true,这不是字谜.您可以对字符串进行排序并检查它们是否相等:

function checkAnagram(string1, string2) {
   return string1.toLowerCase().split("").sort().join("") === string2.toLowerCase().split("").sort().join("")
}
Run Code Online (Sandbox Code Playgroud)