Mutations 集合之间的关系,匹配相同字符


#1

Tell us what’s happening:

Your code so far


    function mutation(arr) {
        let arr00 = arr[0].toLowerCase();
        let arr11 = arr[1].toLowerCase();
        for (var i = 0; i < arr11.length; i++) {
            if (arr00.indexOf(arr11[i]) < 0) {
                return false;
            }
            return true;
        }
    }

    mutation(["hello", "hey"]);

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36.

Link to the challenge:
https://learn.freecodecamp.one/javascript-algorithms-and-data-structures/basic-algorithm-scripting/mutations


#2

image

这是我的代码,可我不知道为什么hey也可以和hello 匹配返回 true!!尴尬


#3

因为你的 return true 位置放错了。
你的整体思路是 OK 的,但有点小问题。
现在,你现在的代码的意思是:

  • 遍历 arr11。对于每一个元素(即 arr[1] 的每一个字符):
    • 只要发现了 arr00 中不存在某一个字符:
      • 返回 false
    • 否则,返回 true

相当于,你现在的代码只判断了第一个字符。比如,对于 mutation(["hello", "hey"])

  • 开始循环,i0。此时 arr11[i]h
  • arr00.indexOf('h') 为 0,不小于 0
  • 此时,执行 return true;。跳出循环并结束函数执行

正确的思路应该是:

  • 遍历 arr11。对于每一个元素(即 arr[1] 的每一个字符):
    • 只要发现了 arr00 中不存在当前遍历到的字符:
      • 返回 false
  • 遍历结束,所有字符都没有出现上述情况,因此可以返回 true

可以再考虑下该如何写