首页 > 解决方案 > 为什么我不能用 coderbyte 挑战 #3 解决这个问题?

问题描述

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

因为我使用的是 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

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

标签: javascriptalgorithm

解决方案


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

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


推荐阅读