Τρεις τρόποι για να βρείτε τη μεγαλύτερη λέξη σε μια συμβολοσειρά σε JavaScript

Αυτό το άρθρο βασίζεται στο σενάριο Free Code Camp Basic Algorithm " Βρείτε τη μεγαλύτερη λέξη σε μια συμβολοσειρά ".

Σε αυτόν τον αλγόριθμο , θέλουμε να εξετάσουμε κάθε μεμονωμένη λέξη και να μετρήσουμε πόσα γράμματα σε κάθε μια. Στη συνέχεια, συγκρίνετε τις μετρήσεις για να προσδιορίσετε ποια λέξη έχει τους περισσότερους χαρακτήρες και επιστρέψτε το μήκος της μεγαλύτερης λέξης.

Σε αυτό το άρθρο, θα εξηγήσω τρεις προσεγγίσεις. Πρώτα με βρόχο FOR, δεύτερο με τη μέθοδο ταξινόμησης () και τρίτο με τη μέθοδο μείωσης ().

Πρόκληση αλγορίθμου

Επιστρέψτε το μήκος της μεγαλύτερης λέξης στην παρεχόμενη πρόταση.

Η απάντησή σας πρέπει να είναι ένας αριθμός.

Παρέχονται δοκιμές

  • findLongestWord ("Η γρήγορη καφέ αλεπού πήδηξε πάνω από τον τεμπέλης σκύλο") θα πρέπει να επιστρέψει έναν αριθμό
  • findLongestWord ("Η γρήγορη καφέ αλεπού πήδηξε πάνω από τον τεμπέλης σκύλο") θα πρέπει να επιστρέψει 6
  • findLongestWord ("Μπορεί η δύναμη να είναι μαζί σας") θα πρέπει να επιστρέψει 5
  • findLongestWord ("Η Google κάνει ένα ρολό βαρελιών") θα πρέπει να επιστρέψει 6
  • findLongestWord ("Ποια είναι η μέση ταχύτητα της ταχύτητας του αέρα σε ένα χελιδόνι χωρίς φορτίο") θα πρέπει να επιστρέψει 8
  • findLongestWord ("Τι γίνεται αν δοκιμάσουμε μια υπερ-μακρά λέξη όπως η ωτορινολαρυγγολογία")θα πρέπει να επιστρέψει 19
function findLongestWord(str) { return str.length; } findLongestWord("The quick brown fox jumped over the lazy dog");

1. Βρείτε τη μεγαλύτερη λέξη με βρόχο FOR

Για αυτήν τη λύση, θα χρησιμοποιήσουμε τη μέθοδο String.prototype.split ()

  • Η μέθοδος split () διαχωρίζει ένα αντικείμενο String σε μια σειρά συμβολοσειρών διαχωρίζοντας το string σε sub string.

Θα χρειαστεί να προσθέσουμε έναν κενό χώρο ανάμεσα στην παρένθεση της μεθόδου split () ,

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

που θα παράγει μια σειρά διαχωρισμένων λέξεων:

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

Εάν δεν προσθέσετε το κενό στην παρένθεση, θα έχετε αυτήν την έξοδο:

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

ΧΩΡΙΣ ΣΧΟΛΙΑ:

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. Βρείτε τη μεγαλύτερη λέξη με τη μέθοδο ταξινόμησης ()

Για αυτήν τη λύση, θα χρησιμοποιήσουμε τη μέθοδο Array.prototype.sort () για να ταξινομήσουμε τον πίνακα με κάποιο κριτήριο ταξινόμησης και στη συνέχεια να επιστρέψουμε το μήκος του πρώτου στοιχείου αυτού του πίνακα.

  • Η μέθοδος sort () ταξινομεί τα στοιχεία ενός πίνακα στη θέση του και επιστρέφει τον πίνακα.

Στην περίπτωσή μας, εάν ταξινομήσουμε απλώς τον πίνακα

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

θα έχουμε αυτήν την έξοδο:

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

Στο Unicode, οι αριθμοί έρχονται πριν από κεφαλαία γράμματα, που προηγούνται των πεζών.

Πρέπει να ταξινομήσουμε τα στοιχεία με κάποιο κριτήριο ταξινόμησης,

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

όπου το μήκος του δεύτερου στοιχείου συγκρίνεται με το μήκος του πρώτου στοιχείου στον πίνακα.

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

ΧΩΡΙΣ ΣΧΟΛΙΑ:

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. Βρείτε τη μεγαλύτερη λέξη με τη μέθοδο μείωσης ()

Για αυτήν τη λύση, θα χρησιμοποιήσουμε το Array.prototype.reduce ().

  • Η μέθοδος μείωση () εφαρμόζει μια συνάρτηση έναντι ενός συσσωρευτή και κάθε τιμής του πίνακα (από αριστερά προς τα δεξιά) για να τον μειώσει σε μία μόνο τιμή.

η μείωση () εκτελεί μια λειτουργία επιστροφής κλήσης μία φορά για κάθε στοιχείο που υπάρχει στον πίνακα.

Μπορείτε να δώσετε μια αρχική τιμή ως το δεύτερο όρισμα για μείωση, εδώ θα προσθέσουμε μια κενή συμβολοσειρά "".

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

ΧΩΡΙΣ ΣΧΟΛΙΑ:

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

Ελπίζω να το βρήκατε χρήσιμο. Αυτό είναι μέρος της σειράς άρθρων μου «Πώς να επιλύσω τους αλγόριθμους FCC» σχετικά με τις Προκλήσεις Αλγόριθμου Free Code Camp, όπου προτείνω αρκετές λύσεις και εξηγώ βήμα-βήμα τι συμβαίνει κάτω από την κουκούλα.

Τρεις τρόποι για να επαναλάβετε μια συμβολοσειρά σε JavaScript

Σε αυτό το άρθρο, θα εξηγήσω πώς να λύσετε την πρόκληση "Επανάληψη συμβολοσειράς επανάληψη συμβολοσειράς" του FreeCodeCamp. Αυτό περιλαμβάνει…

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

Σε αυτό το άρθρο, θα εξηγήσω πώς να λύσω την πρόκληση του "Return Largest Numbers in Arrays" του Free Code Camp. Αυτό…

Εάν έχετε τη δική σας λύση ή οποιεσδήποτε προτάσεις, μοιραστείτε τις παρακάτω στα σχόλια.

Ή μπορείτε να με ακολουθήσετε στο Medium , Twitter, Github και LinkedIn , αμέσως αφού κάνετε κλικ στην πράσινη καρδιά παρακάτω ;-)

# StayCurious, # KeepOnHacking & # MakeItHappen!

Πόροι

  • μέθοδος split () - MDN
  • είδος () μέθοδος - MDN
  • μείωση () - MDN
  • String.length - MDN
  • για - MDN