найти самое длинное слово в строке без использования метода split - PullRequest
1 голос
/ 05 мая 2019

Мой учитель попросил нас попытаться построить функцию, которая находит самую длинную длину слова в строке без использования метода str.split (). функция должна взять строку в качестве параметра и вывести длину самого длинного слова.

До сих пор я пытался создать функцию, которая помещает строку в массив с помощью метода .push, затем пытается разбить этот массив на каждое отдельное слово, найти длину каждого слова в каждом подмассиве и сравнить. Потому что я не умный или не достаточно опытный, чтобы сделать это, мой друг сказал мне, чтобы попытаться:

> «просто используйте две« отслеживающие »переменные. Одна для отслеживания текущего слова и одна для отслеживания самого длинного из увиденных до сих пор слов, я позволю вам подумать о начальных значениях того, что они должны быть. Далее это просто вопрос итерации каждого символа строки str (строки итерируемы, как массивы), чтобы «построить» слово. Когда вы сталкиваетесь с пробелом или после конца строки, вы знаете, что у вас есть полное слово. Вы сравниваете длину этого слова с текущим самым длинным словом (вашей другой переменной отслеживания) и присвойте наибольшее из двух вашей самой длинной переменной отслеживания слова.В самом конце итерации ваша самая длинная переменная отслеживания слова будет содержать самую длинную длину слова, которую вы можете вернуть.Примечание: Вам нужно будет сбросить переменную word после проверки ее длины, чтобы она не продолжала «строить» до конца итерации ». >

Я не совсем уверен, что он имеет в виду или что делать.

пока у меня есть это:

function findLongestWordLength(str) {
    let words = []

    words.push(str);



    console.log(words)



}

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

что мне делать? Я перенес строку в массив, но теперь, когда мой друг дал мне подсказку, я не уверен, что делать.

Ответы [ 2 ]

2 голосов
/ 05 мая 2019

Прокручивать каждый символ в строке , добавляя к текущему слову. Если вы попали в пробел, проверьте, длиннее ли ваше текущее слово, чем предыдущее самое длинное слово. Если это так, сохраните его. Если это не так, ничего не делать с ним.

Очистить текущее слово и продолжить движение по строке.

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);
1 голос
/ 05 мая 2019

Вероятно, более короткий и быстрый способ - использовать простое регулярное выражение, подобное этому

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") );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...