在不使用split方法的情况下找到字符串中最长的单词

时间:2019-05-05 00:02:39

标签: javascript arrays string

我的老师要求我们尝试构建一个不使用str.split()方法就能找到字符串中最长单词的函数。该函数应将字符串作为参数,并输出最长单词的长度。

到目前为止,我已经尝试制作一个函数,使用.push方法将字符串放入数组中,然后尝试将该数组分解为每个单词,并在每个子数组中找到每个单词的长度,然后进行比较。因为我不聪明或没有足够的经验来做这件事,所以我的一个朋友告诉我尝试:

  

>   “只需使用两个“ tracking”变量。一个变量跟踪当前单词,另一个变量跟踪迄今为止看到的最长单词,我将让您考虑这些变量的初始值。接下来,它只是一个遍历str的每个字符(字符串像数组一样可迭代)以“构建”一个单词的问题,当您遇到空格字符或str的结尾时,您知道您有一个完整的单词。您可以比较此单词的长度使用当前最长的单词(您的其他跟踪变量),并将两者中的较大者分配给最长的单词跟踪变量。在迭代的最后,最长的单词跟踪变量将包含最长的单词长度,您可以返回该长度。在检查单词变量的长度之后,您将需要重置它,因此它不会在其余的迭代过程中继续“构建”。”   >

我不太确定他的意思或做什么。

到目前为止,我有这个:

function findLongestWordLength(str) {
    let words = []

    words.push(str);



    console.log(words)



}

findLongestWordLength("The quick brown fox jumped over the lazy dog");

我该怎么办?我已将字符串推送到数组,但是现在我的朋友给了我一个提示,我不确定该怎么办。

2 个答案:

答案 0 :(得分:2)

Loop through each character in the string,添加到当前单词。如果要进入空格,请检查当前单词是否长于上一个最长单词。如果是的话,将其存储。如果不是,则不执行任何操作。

清除当前单词并继续在字符串中移动。

arrays

答案 1 :(得分:1)

也许更简单快捷的方法是使用像这样的简单正则表达式

function findLongestWordLength( str ) {
  var longestWord = "";
  str.replace( /\S+/g, function( match ) {
        if ( match.length > longestWord.length )
          longestWord = match;
      }
    ); 
    return longestWord;  // .length; 
 }

console.log( findLongestWordLength("The quick brown fox jumped over the lazy dog") );