Tri načina za pronalaženje najduže riječi u nizu u JavaScript-u

Ovaj se članak temelji na skripti za osnovni algoritam Free Code Camp “ Pronađi najdužu riječ u nizu ”.

U ovom algoritmu želimo pogledati svaku pojedinu riječ i izbrojati koliko slova ima u svakoj. Zatim, usporedite brojanje kako biste utvrdili koja riječ ima najviše znakova i vratili duljinu najdulje riječi.

U ovom ću članku objasniti tri pristupa. Prvo s FOR petljom, drugo metodom sort (), a treće metodom reduce ().

Izazov algoritma

Vrati duljinu najdulje riječi u navedenoj rečenici.

Vaš bi odgovor trebao biti broj.

Dati test slučajevi

  • findLongestWord ("Brza smeđa lisica preskočila je lijenog psa") trebala bi vratiti broj
  • findLongestWord ("Brza smeđa lisica preskočila je lijenog psa") trebala bi se vratiti 6
  • findLongestWord ("Neka sila bude s vama") trebao bi se vratiti 5
  • findLongestWord ("Google napravi barel roll") trebao bi vratiti 6
  • findLongestWord ("Kolika je prosječna brzina brzine praznog gutanja") treba vratiti 8
  • findLongestWord ("Što ako isprobamo superdugu riječ poput otorinolaringologije")treba vratiti 19
function findLongestWord(str) { return str.length; } findLongestWord("The quick brown fox jumped over the lazy dog");

1. Pronađite najdužu riječ s petljom FOR

Za ovo rješenje koristit ćemo metodu String.prototype.split ()

  • Metoda split () razdvaja objekt String u niz nizova odvajanjem niza u podnizove.

Trebat ćemo dodati prazan prostor između zagrada metode split () ,

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

koji će iznijeti niz odvojenih riječi:

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

Ako ne dodate razmak u zagradi, imat ćete ovaj izlaz:

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

Bez komentara:

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. Pronađite najdužu riječ metodom sort ()

Za ovo rješenje koristit ćemo metodu Array.prototype.sort () za sortiranje niza po nekom kriteriju za poredak, a zatim ćemo vratiti duljinu prvog elementa ovog niza.

  • Metoda sort () sortira elemente niza na mjestu i vraća niz.

U našem slučaju, ako samo sortiramo niz

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

imat ćemo ovaj izlaz:

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

U Unicodeu, brojevi dolaze ispred velikih slova, a ispred malih slova.

Moramo sortirati elemente prema nekom kriteriju za poredak,

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

gdje se duljina drugog elementa uspoređuje s duljinom prvog elementa u nizu.

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

Bez komentara:

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. Pronađite najdužu riječ pomoću metode reduce ()

Za ovo rješenje koristit ćemo Array.prototype.reduce ().

  • Metoda reduce () primjenjuje funkciju na akumulator i svaku vrijednost niza (slijeva udesno) kako bi je smanjila na jednu vrijednost.

reduce () izvršava funkciju povratnog poziva jednom za svaki element prisutan u polju.

Možete navesti početnu vrijednost kao drugi argument za smanjenje, ovdje ćemo dodati prazan niz “”.

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

Bez komentara:

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

Nadam se da vam je ovo pomoglo. Ovo je dio moje serije članaka "Kako riješiti FCC algoritme" o izazovima Algoritma slobodnog koda, gdje predlažem nekoliko rješenja i korak po korak objašnjavam što se događa ispod haube.

Tri načina za ponavljanje niza u JavaScript-u

U ovom ću članku objasniti kako riješiti izazov FreeCodeCampa "Ponovi niz ponavljaj niz". To uključuje ...

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