【问题标题】:Missing letters freecodecamp缺少字母
【发布时间】:2017-01-26 12:27:43
【问题描述】:

其实我在几分钟前就找到了答案。 但是我发现了一些奇怪的东西。

这是我对 freeCodeCamp 挑战中“缺少字母”的回答。

function fearNotLetter(str) {

var string; 

for (i=0;i<str.length;i++) {
  if(str.charCodeAt(i)+1 < str.charCodeAt(i+1)){
    string = String.fromCharCode(str.charCodeAt(i)+1);
 }
}

return string;

}  

当我将 if 语句中的

上面代码中的

【问题讨论】:

    标签: javascript operator-keyword


    【解决方案1】:

    您的代码有一个小缺陷,当您使用

    如果你看到 str.charCodeAt(i+1);此代码在最后一次迭代中检查字符串末尾的一个点,并将返回 NaN 结果。

    如果我提供字符串“abce”,它将检查 f 是否

    但是,如果您提供 !=,那么在相同的情况下,它会知道 f != NaN 并进入 if 语句。然后,这会覆盖实际丢失的字母并使您的 FCC 测试用例失败,因为它正在用您的字符串变量中的 f 替换丢失的 d。

    要修复您的代码,只需将 for 循环更改为在字符串长度之前结束一次迭代。

    for (i = 0; i != str.length-1; i++) {
    }
    

    【讨论】:

    • 我不明白你为什么认为 NaN 大于 f。我猜他们不能订购。因为它们不是偶数!
    • 没错,它不是。但无论哪种方式都没关系,条件将失败,因为 NaN 不能与数字进行比较,所以你会得到相同的结果。所以你仍然需要改变你的 for 循环条件。
    • 你觉得答案是错误的,还是正确的?如果我没有更多问题,您可以将其标记为答案。
    • 谢谢,断点 25!我在 FCC 上运行了你的代码,它通过了挑战。顺便说一句,你的意思是我应该改变循环条件,不要将字符串(我的意思是 ABC)与 NaN 进行比较?
    • 是的,没有对 NaN 进行检查。因此,如果您还记得,数组的长度总是比数组的最后一个索引位置多 1,因此我们必须从长度中减去 1 来解决这个问题。如果你这样做,你的代码就很棒。
    【解决方案2】:

    这是我不使用 .charCodeAt() 函数的方法:)

    function fearNotLetter(str) {
      var ind;
      var final = [];
      var alf =['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'];
      str = str.split('');
      ind = alf.splice(alf.indexOf(str[0]),alf.indexOf(str[str.length-1]));
      for(var i=0;i<ind.length;i++){
        if(str.indexOf(ind[i]) == -1){
          final.push(ind[i]);
        }
      }
      if(final.length != 0){
        return final.join('');
      }
      return;
    }
    
    fearNotLetter("bcef");
    

    【讨论】:

      【解决方案3】:

      我的解决方案:

      function fearNoLetter(str){
          var j= str.charCodeAt(0);
          for(var i=str.charCodeAt(0); i<str.charCodeAt(str.length-1); i++){
              j = str.charCodeAt(i - str.charCodeAt(0));
              if (i != j){
                  return String.fromCharCode(i);
              }
          }
      }
      

      【讨论】:

        【解决方案4】:

        我的解决方案:

        function fearNotLetter(str) {
          let y = 0;
          for (let i = str.charCodeAt(0); i < str.charCodeAt(str.length - 1); i++) {
            if (str.charCodeAt(y) != i) {
              return String.fromCharCode(i);
            }
            y++;
          }
          return;
        }
        console.log(fearNotLetter("ace"));

        【讨论】:

          【解决方案5】:
          function fearNotLetter(str) {
            let alpha = "abcdefghijklmnopqrstuvwxyz";
            let alphabet = []
            for(let j = 0; j< alpha.length; j++){
              alphabet.push(alpha[j])
            }
            if (alphabet.length == str.length){
              let result = undefined;
              return result
            }else{
                const start  =alphabet.indexOf(str[0])
                let end = (str.length)-1
                const stop  = alphabet.indexOf(str[end])
                const finish = alphabet.slice(start,stop)
          
          
                let result = finish.filter(item => !finish.includes(item) || !str.includes(item))
                result = String(result)
                return  result
            }
            return result
          }
          
          
          console.log(fearNotLetter("abcdefghijklmnopqrstuvwxyz"));
          

          【讨论】:

            猜你喜欢
            • 2017-10-25
            • 2020-11-01
            • 2012-07-23
            • 2014-10-15
            • 1970-01-01
            • 2020-04-16
            • 1970-01-01
            • 2017-04-05
            • 2013-12-13
            相关资源
            最近更新 更多