Trois façons de trouver le mot le plus long dans une chaîne en JavaScript

Cet article est basé sur le scripting d'algorithme de base de Free Code Camp « Trouver le mot le plus long d'une chaîne ».

Dans cet algorithme , nous voulons regarder chaque mot individuel et compter le nombre de lettres dans chacun. Ensuite, comparez les nombres pour déterminer quel mot contient le plus de caractères et renvoyez la longueur du mot le plus long.

Dans cet article, je vais vous expliquer trois approches. D'abord avec une boucle FOR, ensuite en utilisant la méthode sort () et en troisième en utilisant la méthode reduction ().

Défi algorithme

Renvoie la longueur du mot le plus long de la phrase fournie.

Votre réponse doit être un nombre.

Cas de test fournis

  • findLongestWord ("Le renard brun rapide a sauté par-dessus le chien paresseux") devrait renvoyer un nombre
  • findLongestWord ("Le renard brun rapide a sauté par-dessus le chien paresseux") devrait revenir 6
  • findLongestWord ("Que la force soit avec vous") devrait renvoyer 5
  • findLongestWord ("Google fait un tonneau") devrait renvoyer 6
  • findLongestWord («Quelle est la vitesse moyenne d'une hirondelle à vide») devrait renvoyer 8
  • findLongestWord ("Et si nous essayons un mot très long tel que oto-rhino-laryngologie")devrait retourner 19
function findLongestWord(str) { return str.length; } findLongestWord("The quick brown fox jumped over the lazy dog");

1. Trouvez le mot le plus long avec une boucle FOR

Pour cette solution, nous utiliserons la méthode String.prototype.split ()

  • La méthode split () divise un objet String en un tableau de chaînes en séparant la chaîne en sous-chaînes.

Nous devrons ajouter un espace vide entre les parenthèses de la méthode split () ,

var strSplit = “The quick brown fox jumped over the lazy dog”.split(‘ ‘);

qui affichera un tableau de mots séparés:

var strSplit = [“The”, “quick”, “brown”, “fox”, “jumped”, “over”, “the”, “lazy”, “dog”];

Si vous n'ajoutez pas d'espace entre les parenthèses, vous aurez cette sortie:

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  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  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");

Sans commentaire:

function findLongestWord(str) { var strSplit = str.split(' '); var longestWord = 0; for(var i = 0; i  longestWord){ longestWord = strSplit[i].length; } } return longestWord; } findLongestWord("The quick brown fox jumped over the lazy dog");

2. Trouvez le mot le plus long avec la méthode sort ()

Pour cette solution, nous utiliserons la méthode Array.prototype.sort () pour trier le tableau selon un critère de classement, puis renvoyer la longueur du premier élément de ce tableau.

  • La méthode sort () trie les éléments d'un tableau en place et retourne le tableau.

Dans notre cas, si nous trions simplement le tableau

var sortArray = [“The”, “quick”, “brown”, “fox”, “jumped”, “over”, “the”, “lazy”, “dog”].sort();

nous aurons cette sortie:

var sortArray = [“The”, “brown”, “dog”, “fox”, “jumped”, “lazy”, “over”, “quick”, “the”];

En Unicode, les nombres viennent avant les lettres majuscules, qui viennent avant les lettres minuscules.

Nous devons trier les éléments selon un critère de classement,

[].sort(function(firstElement, secondElement) { return secondElement.length — firstElement.length; })

où la longueur du deuxième élément est comparée à la longueur du premier élément du tableau.

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");

Sans commentaire:

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. Recherchez le mot le plus long avec la méthode reduction ()

Pour cette solution, nous utiliserons Array.prototype.reduce ().

  • La méthode reduction () applique une fonction à un accumulateur et à chaque valeur du tableau (de gauche à droite) pour le réduire à une valeur unique.

réduire () exécute une fonction de rappel une fois pour chaque élément présent dans le tableau.

Vous pouvez fournir une valeur initiale comme deuxième argument à réduire, ici nous ajouterons une chaîne vide «».

[].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");

Sans commentaire:

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");

J'espère que vous avez trouvé cela utile. Cela fait partie de ma série d'articles «Comment résoudre les algorithmes FCC» sur les défis de l'algorithme Free Code Camp, où je propose plusieurs solutions et explique étape par étape ce qui se passe sous le capot.

Trois façons de répéter une chaîne en JavaScript

Dans cet article, je vais vous expliquer comment résoudre le défi «Répéter une chaîne répéter une chaîne» de freeCodeCamp. Cela implique…

Two ways to confirm the ending of a String in JavaScript

In this article, I’ll explain how to solve freeCodeCamp’s “Confirm the Ending” challenge.

Three Ways to Reverse a String in JavaScript

This article is based on Free Code Camp Basic Algorithm Scripting “Reverse a String”

Three Ways to Factorialize a Number in JavaScript

This article is based on Free Code Camp Basic Algorithm Scripting “Factorialize a Number”

Two Ways to Check for Palindromes in JavaScript

This article is based on Free Code Camp Basic Algorithm Scripting “Check for Palindromes”.

Three Ways to Title Case a Sentence in JavaScript

This article is based on Free Code Camp Basic Algorithm Scripting “Title Case a Sentence”.

Three ways you can find the largest number in an array using JavaScript

In this article, I’m going to explain how to solve Free Code Camp’s “Return Largest Numbers in Arrays” challenge. This…

If you have your own solution or any suggestions, share them below in the comments.

Or you can follow me on Medium, Twitter, Github and LinkedIn, right after you click the green heart below ;-)

‪#‎StayCurious‬, ‪#‎KeepOnHacking‬ & ‪#‎MakeItHappen‬!

Resources

  • split() method — MDN
  • sort() method — MDN
  • reduce() — MDN
  • String.length — MDN
  • for — MDN