如果数组第一个元素中的字符串包含数组第二个元素中字符串的所有字母,则返回 true。不区分大小写和顺序无关紧要,只有字母很重要。例如 - ["Hello","hello"] 返回 true,["Alien","lien"] 和 ["Mary", "Aarmy"] 也是如此。我想你明白了。 如果不返回false。
我可以用 Array.indexOf() === -1
解决它(在第一个 for 循环中)但是它可以用这段代码工作吗,它是相反的。我只是无法让它返回 false
。 最后,我想知道,你能不能在不改变方法的情况下让它返回 false。
function mutation(arr) {
var split = arr[1].toLowerCase().split("");
var splitSecond = arr[0].toLowerCase().split("");
for(k=0;k<=arr[0].length;k++){
for(i=0;i<=arr[1].length;i++){
if(split[i]===splitSecond[k]) {
return true
}
}
} return false
}
mutation(["hello", "hney"], "");
如果使用任何其他方法,请说明:)
最佳答案
您的代码的问题在于您返回 true;
一旦 一个 字母匹配。
您需要做的是检查是否所有 字母匹配,通过检查任何 字母不 匹配更容易实现。
mainloop:
for(k=0;k<=arr[0].length;k++){
for(i=0;i<=arr[1].length;i++){
if(split[i]===splitSecond[k]) {
continue mainloop; // found the letter, move on to next search
}
}
return false; // failed to find letter, fail here
}
return true; // haven't failed yet and end of input reached. Success!
另一种选择是:
for(k=0;k<arr[0].length;k++) {
if( arr[1].indexOf(split[k]) < 0) {
// letter not found
return false;
}
}
// not failed yet? Excellent!
return true;
关于Javascript 基本算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32717408/