我正在尝试比较两个字符串以查看它们是否是变位词。
我的问题是我只比较每个字符串中的第一个字母。例如,“Mary”和“Army”将返回 true,但不幸的是,“Mary”和 Arms 也会返回 true。
如何在返回 true/false 之前比较两个字符串的每个字母?
这是一个 jsbin 演示(单击“控制台”选项卡查看结果):
http://jsbin.com/hasofodi/1/edit
function compare (a, b) {
y = a.split("").sort();
z = b.split("").sort();
for (i=0; i<y.length; i++) {
if(y.length===z.length) {
if (y[i]===z[i]){
console.log(a + " and " + b + " are anagrams!");
break;
}
else {
console.log(a + " and " + b + " are not anagrams.");
break;
}
}
else {
console.log(a + " has a different amount of letters than " + b);
}
break;
}
}
compare("mary", "arms");
最佳答案
排序后,您可以将
数组再次加入字符串,而不是逐个字母地比较,让浏览器进行比较:
function compare (a, b) {
var y = a.split("").sort().join(""),
z = b.split("").sort().join("");
console.log(z === y
? a + " and " + b + " are anagrams!"
: a + " and " + b + " are not anagrams."
);
}
关于JavaScript 字谜比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23785465/