Kolme tapaa löytää pisin sana merkkijonossa JavaScriptissä

Tämä artikkeli perustuu Free Code Camp Basic Algorithm Scripting " Etsi pisin sana merkkijonosta ".

Tässä algoritmissa haluamme tarkastella kutakin yksittäistä sanaa ja laskea, kuinka monta kirjainta kussakin on. Sitten vertaa lukemia selvittääksesi, missä sanassa on eniten merkkejä, ja palauta pisin sanan pituus.

Tässä artikkelissa aion selittää kolme lähestymistapaa. Ensin FOR-silmukalla, toisella sort () -menetelmällä ja kolmannella reduc (() -menetelmällä.

Algoritmihaaste

Palauta annettujen lauseiden pisin sanan pituus.

Vastauksesi tulee olla numero.

Annetut testitapaukset

  • findLongestWord (“Nopea ruskea kettu hyppäsi laiskan koiran yli”) pitäisi palauttaa numero
  • findLongestWord (“Nopea ruskea kettu hyppäsi laiskan koiran yli”) pitäisi palata 6
  • findLongestWord ("Voiko voima olla kanssasi") pitäisi palauttaa 5
  • findLongestWord ("Google tekee tynnyrirullan") pitäisi palauttaa 6
  • findLongestWord ("Mikä on tyhjä niellä keskimääräinen nopeuden nopeus") pitäisi palauttaa 8
  • findLongestWord ("Mitä jos yritämme erittäin pitkää sanaa, kuten otorinolaryngologia")pitäisi palata 19
function findLongestWord(str) { return str.length; } findLongestWord("The quick brown fox jumped over the lazy dog");

1. Etsi pisin sana FOR-silmukalla

Tässä ratkaisussa käytämme String.prototype.split () -menetelmää

  • Split () menetelmä jakaa String esine merkkijonojen joukko erottamalla merkkijonon osa jousille.

Meidän on lisättävä tyhjä tila split () -menetelmän sulkeiden väliin ,

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

joka tuottaa joukon erotettuja sanoja:

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

Jos et lisää suluissa olevaa tilaa, sinulla on tämä lähtö:

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

Ilman kommentteja:

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. Etsi pisin sana lajittelu () -menetelmällä

Tässä ratkaisussa käytämme Array.prototype.sort () -menetelmää lajittelemaan taulukko jonkin järjestyskriteerin mukaan ja palauttamaan sitten tämän taulukon ensimmäisen elementin pituus.

  • Sort () menetelmä lajittelee elementit array paikallaan ja palauttaa ryhmän.

Meidän tapauksessamme, jos vain lajittelemme taulukon

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

meillä on tämä lähtö:

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

Unicodessa numerot ovat ennen isoja kirjaimia, jotka ovat ennen pieniä kirjaimia.

Meidän on lajiteltava elementit jonkin järjestyskriteerin mukaan,

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

jossa toisen elementin pituutta verrataan ryhmän ensimmäisen elementin pituuteen.

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

Ilman kommentteja:

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. Etsi pisin sana reduc () -menetelmällä

Tätä ratkaisua varten käytämme Array.prototype.reduce ().

  • Vähentää () menetelmä soveltuu funktiona vastaan akun ja kukin arvoa matriisin (mukaan vasemmalta oikealle) vähentää sen yksittäisen arvon.

reduc () suorittaa soittopyynnön kerran jokaiselle matriisissa olevalle elementille.

Voit antaa toisen arvon pienentäväksi argumentiksi alkuarvon, tässä lisätään tyhjä merkkijono "".

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

Ilman kommentteja:

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

Toivottavasti pidit tästä hyödyllisenä. Tämä on osa artikkeliani "How to Solve FCC Algorithms" Free Code Camp Algorithm Challenges -sarjasta, jossa ehdotan useita ratkaisuja ja selitän askel askeleelta, mitä hupun alla tapahtuu.

Kolme tapaa toistaa merkkijono JavaScriptissä

Tässä artikkelissa selitän kuinka ratkaista freeCodeCampin ”Toista merkkijono toista merkkijono” -haaste. Tähän sisältyy…

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

Tässä artikkelissa aion selittää kuinka ratkaista Free Code Campin "Palauta suurimmat numerot matriiseissa" -haaste. Tämä…

Jos sinulla on oma ratkaisusi tai ehdotuksia, jaa ne alla kommenteissa.

Tai voit seurata minua Mediumissa , Twitterissä, Githubissa ja LinkedInissä heti, kun napsautat vihreää sydäntä alla ;-)

# StayCurious, # KeepOnHacking & # MakeItHappen!

Resurssit

  • split () menetelmä - MDN
  • lajittelu () -menetelmä - MDN
  • vähennä () - MDN
  • Merkkijono. Pituus - MDN
  • puolesta - MDN