检查两个字符串中的Anagram
我创建了一个函数来检查2个单词是否是anagrams,但是我希望做得更好,在if语句不太好的情况下,我觉得计数器的评价不错,如果有人有更好的解决方案会很好。检查两个字符串中的Anagram
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;
}
这里是做的更简单的方法:
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);
改变s2为“ttse”,你会得到一个“false”。 –
???我认为你需要'.sort()'而不是'.reverse()',并且你必须对两个*字符串进行排序。 An * anagram *是由另一个字中任意重排字母组成的单词。 – Pointy
哎呀我误解了一秒的问题 – kemiller2002
您的代码返回true字符串 'AABB' 和 'ABCC',这是不字谜。你可以对字符串进行排序,并检查它们是否相等:
function checkAnagram(string1, string2) {
return string1.toLowerCase().split("").sort().join("") === string2.toLowerCase().split("").sort().join("")
}
水坝,这么容易,我没有记住那种类型大声笑 –
只是一个方面说明:返回false为'string1 === string2'。毕竟,“苹果”不是一个“苹果”的字眼。 –
anagram是用不同的顺序用相同的字母做成的单词。也就是说,为了检查一个字谜,唯一需要做的就是为每个单词创建一个字母数组,对数组进行排序并对它们进行比较。你想要的功能在这里:http://stackoverflow.com/a/23785653/5768908 –