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

标签 javascript arrays string

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

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

> "just use two “tracking” variables. One to keep track of the current word and one to keep track of the longest word seen so far I will let you think about the initial values of what these should be. Next, it is just a matter of iterating through each character of str (strings are iterable just like arrays) to “build” a word. When you come across a space character or then end of str you know you have a complete word. You compare the length of this word with the current longest word (your other tracking variable) and assign the larger of the two to your longest word tracking variable. At the very end of the iteration your longest word tracking variable will contain the longest word length which you can return.Note: You will need to reset the word variable after you check it’s length, so it does not continue “building” through the rest of the iteration." >

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

到目前为止我有这个:

function findLongestWordLength(str) {
    let words = []

    words.push(str);



    console.log(words)



}

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

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

最佳答案

Loop through each character in the string , 添加到当前单词。如果遇到空格,请检查当前单词是否比前一个最长单词长。如果是,请存储它。如果不是,则什么也不做。

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

function findLongestWordLength(str) {
  let longestWord = "";
  let currentWord = "";
  
  //Move through the string letter-by-letter
  for (let i = 0; i < str.length; i++) {
    if (str.charAt(i) === " ") { //If we're at a space character
      if (currentWord.length > longestWord.length) longestWord = currentWord; //Check if that word was the longest
      currentWord = ""; //Reset the current word
    } else {
      currentWord += str.charAt(i); //Not at a space character, still building the current word
    }
  }
  if (currentWord > longestWord) longestWord = currentWord; //End of string - check current word once more
  return longestWord;
}

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

关于javascript - 在不使用 split 方法的情况下找到字符串中最长的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55987809/

相关文章:

javascript - 用简单的 JavaScript 替换 jQuery show

c++ - 在类中初始化时 C++ 中奇怪且不正确的数组大小行为

jquery - 从 jquery 中的另一个数组创建一个项目数组

php - 如何获得 789 之前所有可能的数字组合?

python - 检查字符串(或拆分字符串)是否包含列表中的任何单词

javascript - 如何将数组从 observable 映射到另一个数组

javascript - 函数作为参数(with parameters)——JavaScript

PHP如果一个变量有重复只显示第一个实例?

php - 如何将以 HTML 形式输入的字符串保存到文本文件

javascript - 将字符串从 laravel Controller 转换为 javascript