Эта статья основана на Сценарии основных алгоритмов лагеря Free Code « Найти самое длинное слово в строке ».
В этом алгоритме Мы хотим посмотреть на каждое отдельное слово и подсчитать, сколько букв в каждом. Затем сравните количество, чтобы определить, какое слово имеет самые символы и вернуть длину самого длинного слова.
В этой статье я собираюсь объяснить три подхода. Сначала с контуром для STOR, второй с использованием метода SORT () и третьего с использованием метода edite ().
Алгоритм вызовы
Предоставил тестовые случаи
- Findlongestword («Быстрая коричневая лиса прыгнула над ленивой собакой») должен вернуть номер
- Findlongestword («Быстрая коричневая лиса прыгнула над ленивой собакой») должен вернуться 6.
- Findlongestword («Пусть сила будет с вами») должен вернуться 5.
- Findlongestword («Google Do Barrel Roll») должен вернуться 6.
- Findlongestword («Какова средняя скорость воздушного пространства нехватки ненадействительной ласточки») должен вернуться 8.
- Findlongestword («Что, если мы попробуем супер-долгое слово, такие как оториноларингология») должен вернуться 19.
function findLongestWord(str) {
return str.length;
}
findLongestWord("The quick brown fox jumped over the lazy dog");1. Найти самое длинное слово с петлей для цикла
Для этого решения мы будем использовать String.Prototype.split ()
- Сплит () Способ разбивает цепочный объект в массив строк, отделяя струну на субъекты.
Нам нужно будет добавить пустое пространство между скобками Сплит () метод,
var strSplit = "The quick brown fox jumped over the lazy dog".split(' ');который выводит массив отделенных слов:
var strSplit = ["The", "quick", "brown", "fox", "jumped", "over", "the", "lazy", "dog"];
Если вы не добавите место в скобках, у вас будет этот вывод:
var strSplit = ["T", "h", "e", " ", "q", "u", "i", "c", "k", " ", "b", "r", "o", "w", "n", " ", "f", "o", "x", " ", "j", "u", "m", "p", "e", "d", " ", "o", "v", "e", "r", " ", "t", "h", "e", " ", "l", "a", "z", "y", " ", "d", "o", "g"];
function findLongestWord(str) {
// Step 1. Split the string into an array of strings
var strSplit = str.split(' ');
// var strSplit = "The quick brown fox jumped over the lazy dog".split(' ');
// var strSplit = ["The", "quick", "brown", "fox", "jumped", "over", "the", "lazy", "dog"];
// Step 2. Initiate a variable that will hold the length of the longest word
var longestWord = 0;
// Step 3. Create the FOR loop
for(var i = 0; i < strSplit.length; i++){
if(strSplit[i].length > longestWord){ // If strSplit[i].length is greater than the word it is compared with...
longestWord = strSplit[i].length; // ...then longestWord takes this new value
}
}
/* Here strSplit.length = 9
For each iteration: i = ? i < strSplit.length? i++ if(strSplit[i].length > longestWord)? longestWord = strSplit[i].length
1st iteration: 0 yes 1 if("The".length > 0)? => if(3 > 0)? longestWord = 3
2nd iteration: 1 yes 2 if("quick".length > 3)? => if(5 > 3)? longestWord = 5
3rd iteration: 2 yes 3 if("brown".length > 5)? => if(5 > 5)? longestWord = 5
4th iteration: 3 yes 4 if("fox".length > 5)? => if(3 > 5)? longestWord = 5
5th iteration: 4 yes 5 if("jumped".length > 5)? => if(6 > 5)? longestWord = 6
6th iteration: 5 yes 6 if("over".length > 6)? => if(4 > 6)? longestWord = 6
7th iteration: 6 yes 7 if("the".length > 6)? => if(3 > 6)? longestWord = 6
8th iteration: 7 yes 8 if("lazy".length > 6)? => if(4 > 6)? longestWord = 6
9th iteration: 8 yes 9 if("dog".length > 6)? => if(3 > 6)? longestWord = 6
10th iteration: 9 no
End of the FOR Loop*/
//Step 4. Return the longest word
return longestWord; // 6
}
findLongestWord("The quick brown fox jumped over the lazy dog");Без комментариев:
function findLongestWord(str) {
var strSplit = str.split(' ');
var longestWord = 0;
for(var i = 0; i < strSplit.length; i++){
if(strSplit[i].length > longestWord){
longestWord = strSplit[i].length;
}
}
return longestWord;
}
findLongestWord("The quick brown fox jumped over the lazy dog");2. Найдите самое длинное слово со своего рода ( ) Метод
Для этого решения мы будем использовать метод Array.prototypee.sort () для сортировки массива некоторыми критериями заказа, а затем вернуть длину первого элемента этого массива.
- Сортировать () Метод сортирует элементы массива на месте и возвращает массив.
В нашем случае, Если мы просто сортируем массив
var sortArray = ["The", "quick", "brown", "fox", "jumped", "over", "the", "lazy", "dog"].sort();
У нас будет этот вывод:
var sortArray = ["The", "brown", "dog", "fox", "jumped", "lazy", "over", "quick", "the"];
В Unicode номера приходятся до заглавных букв, которые приходят перед строчными буквами.
Нам нужно сортировать элементы некоторыми критериями заказа,
[].sort(function(firstElement, secondElement) { return secondElement.length — firstElement.length; })где длина второго элемента сравнивается с длиной первого элемента в массиве.
function findLongestWord(str) {
// Step 1. Split the string into an array of strings
var strSplit = str.split(' ');
// var strSplit = "The quick brown fox jumped over the lazy dog".split(' ');
// var strSplit = ["The", "quick", "brown", "fox", "jumped", "over", "the", "lazy", "dog"];
// Step 2. Sort the elements in the array
var longestWord = strSplit.sort(function(a, b) {
return b.length - a.length;
});
/* Sorting process
a b b.length a.length var longestWord
"The" "quick" 5 3 ["quick", "The"]
"quick" "brown" 5 5 ["quick", "brown", "The"]
"brown" "fox" 3 5 ["quick", "brown", "The", "fox"]
"fox" "jumped" 6 3 ["jumped", quick", "brown", "The", "fox"]
"jumped" "over" 4 6 ["jumped", quick", "brown", "over", "The", "fox"]
"over" "the" 3 4 ["jumped", quick", "brown", "over", "The", "fox", "the"]
"the" "lazy" 4 3 ["jumped", quick", "brown", "over", "lazy", "The", "fox", "the"]
"lazy" "dog" 3 4 ["jumped", quick", "brown", "over", "lazy", "The", "fox", "the", "dog"]
*/
// Step 3. Return the length of the first element of the array
return longestWord[0].length; // var longestWord = ["jumped", "quick", "brown", "over", "lazy", "The", "fox", "the", "dog"];
// longestWord[0]="jumped" => jumped".length => 6
}
findLongestWord("The quick brown fox jumped over the lazy dog");Без комментариев:
function findLongestWord(str) {
var longestWord = str.split(' ').sort(function(a, b) { return b.length - a.length; });
return longestWord[0].length;
}
findLongestWord("The quick brown fox jumped over the lazy dog");3. Найдите самое длинное слово с уменьшением () Метод
Для этого решения мы будем использовать array.prototype.reduce ().
- Уменьшить () Метод применяет функцию на фоне аккумулятора и каждое значение массива (от левой справа), чтобы уменьшить его до одного значения.
Уменьшите () Выполняет функцию обратного вызова только один раз для каждого элемента, присутствующего в массиве.
Вы можете предоставить начальное значение в качестве второго аргумента для уменьшения, здесь мы добавим пустую строку «».
[].reduce(function(previousValue, currentValue) {...}, "");function findLongestWord(str) {
// Step 1. Split the string into an array of strings
var strSplit = str.split(' ');
// var strSplit = "The quick brown fox jumped over the lazy dog".split(' ');
// var strSplit = ["The", "quick", "brown", "fox", "jumped", "over", "the", "lazy", "dog"];
// Step 2. Use the reduce method
var longestWord = strSplit.reduce(function(longest, currentWord) {
if(currentWord.length > longest.length)
return currentWord;
else
return longest;
}, "");
/* Reduce process
currentWord longest currentWord.length longest.length if(currentWord.length > longest.length)? var longestWord
"The" "" 3 0 yes "The"
"quick" "The" 5 3 yes "quick"
"brown" "quick" 5 5 no "quick"
"fox" "quick" 3 5 no "quick"
"jumped" "quick" 6 5 yes "jumped"
"over" "jumped" 4 6 no "jumped"
"the" "jumped" 3 6 no "jumped"
"lazy" "jumped" 4 6 no "jumped"
"dog" "jumped" 3 6 no "jumped"
*/
// Step 3. Return the length of the longestWord
return longestWord.length; // var longestWord = "jumped"
// longestWord.length => "jumped".length => 6
}
findLongestWord("The quick brown fox jumped over the lazy dog");Без комментариев:
function findLongestWord(str) {
var longestWord = str.split(' ').reduce(function(longest, currentWord) {
return currentWord.length > longest.length ? currentWord : longest;
}, "");
return longestWord.length;
}
findLongestWord("The quick brown fox jumped over the lazy dog");Я надеюсь, что вы нашли это полезным. Это является частью моего «Как решить ALGORITH ALGORITHMMMM MSCH» «Как решить FCC Algorithms», о проблемах алгоритма лагеря Free Code, где я предлагаю несколько решений и объяснить пошаговый шаг, что происходит под капотом.
Три способа повторить строку в JavaScript в этой статье, я объясню, как решить «Повторить строку» «Повторить строку». Это связано с …
Два способа подтвердить окончание строки в JavaScript в этой статье, я объясню, как решить «подтвердить« подтвердить окончание ».
Три способа изменить строку в JavaScript Эта статья основана на Бесплатный кодовый лагерь основной алгоритм сценариев «обратная строка»
Три способа активизировать число в JavaScript Эта статья основана на Бесплатный код Camp Camp Basic Algorith Scripting “Factorialize ряд”
Два способа проверить палиндром в JavaScript Эта статья основана на бесплатном кодовом лагере основных алгоритма сценариев «Проверка на палиндромы».
Три способа к названию.
Три способа вы можете найти наибольшее количество в массиве, используя JavaScript в этой статье, я собираюсь объяснить, как решить бесплатный код Code Camp “Возвращение крупнейших номеров в массивах” Challenge. Этот…
Если у вас есть собственное решение или какие-либо предложения, поделитесь их ниже в комментариях.
Или вы можете следовать за мной на Средний , Twitter , Github и LinkedIn , сразу после нажатия зеленого сердца ниже 😉
# StaySured, # KeepOnhacking & # Masteithappen!
Ресурсы
- Метод разделения () – MDN
- Сортировка () Метод – MDN
- Уменьшить () – MDN
- String.Length – MDN
- для – MDN
Оригинал: “https://www.freecodecamp.org/news/three-ways-to-find-the-longest-word-in-a-string-in-javascript-a2fb04c9757c/”