Trys būdai, kaip rasti ilgiausią „JavaScript“ eilutės žodį

Šis straipsnis yra pagrįstas „Free Code Camp“ pagrindinių algoritmų scenarijais „ Raskite ilgiausią žodį eilutėje “.

Šiame algoritme norime pažvelgti į kiekvieną atskirą žodį ir suskaičiuoti, kiek raidžių yra kiekviename. Tada palyginkite skaičių, kad nustatytumėte, kuris žodis turi daugiausiai simbolių, ir grąžinkite ilgiausio žodžio ilgį.

Šiame straipsnyje aš paaiškinsiu tris būdus. Pirmiausia naudodami FOR kilpą, antrą - naudodami rūšiavimo () metodą ir trečią taikydami sumažinimo () metodą.

Algoritmo iššūkis

Grąžinkite pateikto sakinio ilgiausio žodžio ilgį.

Jūsų atsakymas turėtų būti skaičius.

Pateikti bandymo atvejai

  • findLongestWord („Greita rudoji lapė peršoko tingų šunį“) turėtų grąžinti skaičių
  • findLongestWord („Greita rudoji lapė peršoko tingų šunį“) turėtų grįžti 6
  • „findLongestWord“ („Tegul jėga būna su tavimi“) turėtų grąžinti 5
  • „findLongestWord“ („Google do the barrel roll“) turėtų grąžinti 6
  • findLongestWord („Koks yra vidutinis greitis, kai kregždė nėra pakrauta“) turėtų grąžinti 8
  • findLongestWord („O kas, jei išbandysime labai ilgą žodį, pvz., otorinolaringologiją“)turėtų grįžti 19
function findLongestWord(str) { return str.length; } findLongestWord("The quick brown fox jumped over the lazy dog");

1. Suraskite ilgiausią žodį su FOR Loop

Šiam sprendimui naudosime metodą String.prototype.split ()

  • Suskaldyto () metodas skyla objekto String į stygų masyvo atskiriant eilutę į sub stygos.

Turėsime pridėti tuščią vietą tarp skilties skilimo split () metodo,

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

kuris sukurs atskirų žodžių masyvą:

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

Jei skliaustuose nepridėsite vietos, turėsite šį išvestį:

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

Be komentarų:

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. Raskite ilgiausią žodį naudodami metodą sort ()

Šiam sprendimui naudosime metodą Array.prototype.sort (), kad surūšiuotume masyvą pagal kokį nors eiliškumo kriterijų ir tada grąžintume šio masyvo pirmo elemento ilgį.

  • Rūšiuoti () metodas rūšiuoja masyvo elementus vietoje ir grąžina masyvą.

Mūsų atveju, jei mes tiesiog rūšiuosime masyvą

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

mes turėsime šį rezultatą:

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

„Unicode“ skaičiai yra prieš didžiąsias, o prieš mažąsias.

Turime surūšiuoti elementus pagal tam tikrą užsakymo kriterijų,

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

kur antrojo elemento ilgis lyginamas su pirmo masyvo elemento ilgiu.

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

Be komentarų:

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. Raskite ilgiausią žodį naudodami metodą reduc ()

Šiam sprendimui naudosime Array.prototype.reduce ().

  • Sumažinti () metodas taikomas funkciją prieš akumuliatorius ir kiekvieną masyvo reikšmę (iš kairės į dešinę) jį sumažinti iki vieno vertė.

reduc () vieną kartą atlieka kiekvieno masyvo elemento atgalinio skambinimo funkciją.

Kaip antrą argumentą, kurį norite sumažinti, galite pateikti pradinę vertę, čia pridėsime tuščią eilutę „“.

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

Be komentarų:

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

Tikiuosi, kad jums tai buvo naudinga. Tai yra mano straipsnių apie „Kaip išspręsti FCC algoritmus“ tema „Laisvojo kodo stovyklos algoritmo iššūkiai“ dalis, kur aš siūlau keletą sprendimų ir žingsnis po žingsnio paaiškinu, kas vyksta po gaubtu.

Trys būdai, kaip pakartoti eilutę „JavaScript“

Šiame straipsnyje paaiškinsiu, kaip išspręsti „freeCodeCamp“ iššūkį „Pakartokite eilutę pakartokite eilutę“. Tai apima…

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

Šiame straipsnyje aš paaiškinsiu, kaip išspręsti „Free Code Camp“ iššūkį „Grąžinti didžiausią skaičių masyvuose“. Tai ...

Jei turite savo sprendimą ar kokių nors pasiūlymų, pasidalykite jais toliau komentaruose.

Arba galite sekti mane „ Medium“ , „Twitter“, „Github“ ir „ LinkedIn“ , iškart po to, kai spustelėsite žalią širdį žemiau ;-)

# StayCurious, # KeepOnHacking ir # MakeItHappen!

Ištekliai

  • split () metodas - MDN
  • rūšiavimo () metodas - MDN
  • sumažinti () - MDN
  • Styginių ilgis - MDN
  • už - MDN