【问题标题】:Why can't I solve this problem with coderbyte challenge #3?为什么我不能用 coderbyte 挑战 #3 解决这个问题?
【发布时间】:2021-02-07 17:25:59
【问题描述】:

所以解决这个问题的指令是:“对于这个挑战,你将确定字符串中的最大单词。”

因为我使用的是 JS,所以挑战里面的指令是:

使用 JavaScript 语言,让 LongestWord(sen) 函数接受传递的 sen 参数并返回字符串中最大的单词。如果有两个或多个长度相同的单词,则返回字符串中具有该长度的第一个单词。忽略标点符号并假设 sen 不会为空。

这是我的代码:

function LongestWord(sen){
    
    if (typeof sen !== "string") return "Argument not a string";
    var senSplit = sen.split(" "); //split up the string
   // console.log(senSplit);       //into an array of words
    
    for (var i in senSplit){ //strip out non-alphanumeric characters
        senSplit[i] = senSplit[i].replace(/\W/g, '');
     //   console.log(senSplit[i]);
    }
    
    var wordSplit = new Array();
    for (var j in senSplit){ //split up the strings into character arrays
        wordSplit[j] = senSplit[j].split("");
    //    console.log(wordSplit[j]);
    }
    
    var longest = 0;
    var longWord = "";
    for (var k in senSplit){ //compare length of character arrays
        if (wordSplit[k].length > longest){
            longest = wordSplit[k].length;
            longWord = wordSplit[k];
            
        }
    }
    sen = longWord.join("");
    return sen; //return longest word
}
console.log(LongestWord("Archer is the best cartoon on tv"));
//cartoon

但它只是说“错误”,仅此而已......我没有按照说明进行操作吗??

【问题讨论】:

  • 1.您的代码无法运行(缺少大括号)。 2. 你应该在你定义的一些输入/输出上测试你的代码。在这里你只是发布你的代码并为我说调试
  • 试试LongestWord(""),例如。 (我认为你不需要拆分和加入单个单词;你可以直接使用字符串'length。如果你想拆分和加入,longWord的初始值应该是一个空数组。)
  • @grodzi 其实我忘记写了..我刚刚编辑了我的代码。
  • @MOehm 出于某种原因,我在检查单词长度时一直遇到错误,我可能拼错了一些东西(?)所以我将单词进一步拆分,只是为了显示代码谁是老板。
  • 我认为您的“去除非字母数字”可能有一些问题(单词的定义是什么?他们是否指定它必须只是字母数字?重音或 utf8 字符(如 ㄲ ) ?)

标签: javascript algorithm


【解决方案1】:

如果不知道所使用的输入,我不确定是什么导致了错误,但您可以通过消除将每个单词拆分为字符数组的循环来缩短算法。可以直接获取每个字符串的长度。

function LongestWord(sen) {
    
    if (typeof sen !== "string") return "Argument not a string";
    var senSplit = sen.split(" "); //split up the string
    // console.log(senSplit);       //into an array of words
    
    for (var i in senSplit){ //strip out non-alphanumeric characters
        senSplit[i] = senSplit[i].replace(/\W/g, '');
        console.log(senSplit[i]);
    }
    
    var longest = 0;
    var longWord = "";
    for (var k in senSplit){ //compare length of character arrays
        if (senSplit[k].length > longest){
            longest = senSplit[k].length;
            longWord = senSplit[k];
        }
    }
    
    return longWord; // return longest word
}

console.log(LongestWord("Archer is the best cartoon on tv."));

LongestWord 的这个实现也直接返回最长的单词,而不是把它分配回输入参数sen

【讨论】:

    猜你喜欢
    • 2023-01-24
    • 2017-10-03
    • 1970-01-01
    • 2013-02-03
    • 2022-07-27
    • 1970-01-01
    • 2022-01-16
    • 2013-12-28
    • 1970-01-01
    相关资源
    最近更新 更多