Ez a cikk a Free Code Camp algoritmus- szkriptjein alapul: „ Keresse meg a leghosszabb szót egy karakterláncban ”.
Ebben az algoritmusban meg akarunk nézni minden egyes szót, és megszámolni, hogy hány betű van mindegyikben. Ezután hasonlítsa össze a számlálásokat, hogy megállapítsa, melyik szónak van a legtöbb karaktere, és adja vissza a leghosszabb szó hosszát.
Ebben a cikkben három megközelítést fogok elmagyarázni. Először egy FOR ciklussal, másodszor a sort () módszerrel, harmadszor pedig a reduc () módszerrel.
Algoritmus kihívás
Adja vissza a megadott mondat leghosszabb szójának hosszát.Válaszának számnak kell lennie.
Biztosított tesztesetek
- A findLongestWord („A gyors barna róka átugrotta a lusta kutyát”) számot kell adnia
- findLongestWord („A gyors barna róka átugrotta a lusta kutyát”) 6-nak kell visszatérnie
- A findLongestWord („legyen veled az erő”) 5-ös értéket adjon vissza
- A findLongestWord („Google csinál hordóhenger”) 6- at kell adnia
- findLongestWord („mekkora az üres sebességű fecske átlagos sebessége”) vissza kell adnia 8
- findLongestWord („Mi van, ha olyan szuper hosszú szót próbálunk ki, mint például a fül-orr-gégészet”)vissza kell térnie 19
function findLongestWord(str) { return str.length; } findLongestWord("The quick brown fox jumped over the lazy dog");
1. Keresse meg a leghosszabb szót FOR hurokkal
Ehhez a megoldáshoz a String.prototype.split () metódust fogjuk használni
- A split () metódus a String objektumot stringek tömbjévé osztja fel, a sztringet részláncokra bontva.
Hozzá kell adnunk egy üres helyet a split () metódus zárójelei közé ,
var strSplit = “The quick brown fox jumped over the lazy dog”.split(‘ ‘);
amely különálló szavak tömbjét adja ki:
var strSplit = [“The”, “quick”, “brown”, “fox”, “jumped”, “over”, “the”, “lazy”, “dog”];
Ha a zárójelben nem adja meg a szóközt, akkor ez a kimenet lesz:
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");
Hozzászólások nélkül:
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. Keresse meg a leghosszabb szót a sort () módszerrel
Ehhez a megoldáshoz az Array.prototype.sort () metódust fogjuk használni a tömb rendezéséhez valamilyen sorrend szerint, majd visszaadjuk ennek a tömbnek az első elemét.
- A sort () metódus rendezi a tömb elemeit a helyére, és visszaadja a tömböt.
Esetünkben, ha csak rendezzük a tömböt
var sortArray = [“The”, “quick”, “brown”, “fox”, “jumped”, “over”, “the”, “lazy”, “dog”].sort();
mi lesz ez a kimenet:
var sortArray = [“The”, “brown”, “dog”, “fox”, “jumped”, “lazy”, “over”, “quick”, “the”];
Az Unicode-ban a számok a nagybetűk elé kerülnek, amelyek a kisbetűk elé kerülnek.
Rendezni kell az elemeket valamilyen sorrend szerint,
[].sort(function(firstElement, secondElement) { return secondElement.length — firstElement.length; })
ahol a második elem hosszát összehasonlítjuk a tömb első elemének hosszával.
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");
Hozzászólások nélkül:
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. Keresse meg a leghosszabb szót a reduc () módszerrel
Ehhez a megoldáshoz az Array.prototype.reduce () függvényt fogjuk használni.
- A reduc () módszer függvényt alkalmaz egy akkumulátorra és a tömb minden egyes értékére (balról jobbra), hogy egyetlen értékre redukálódjon.
a reduc () egy visszahívási funkciót hajt végre a tömbben található minden elemnél.
A csökkentés második argumentumaként megadhat egy kezdeti értéket, itt egy üres karakterláncot adunk hozzá.
[].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");
Hozzászólások nélkül:
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");
Remélem, hasznosnak találta ezt. Ez része a Free Code Camp Algorithm Challenges című „Hogyan lehet megoldani az FCC algoritmusokat” című cikksorozatomnak, ahol számos megoldást javaslok, és lépésről lépésre elmagyarázom, mi történik a motorháztető alatt.
Három módon ismételhetünk egy karakterláncot a JavaScript-ben
Ebben a cikkben elmagyarázom, hogyan lehet megoldani a freeCodeCamp „Karakterlánc megismétlése sztring megismétlése” kihívását. Ez magában foglalja…
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