Algorithm Find the Longest Word in a String

๐Ÿšฉ Remember to use Read-Search-Ask if you get stuck. Try to pair program ๐Ÿ‘ฅ and write your own code ๐Ÿ“

๐Ÿ Problem Explanation:

You have to go through each word and figure out which one is the longest and return not the word, but how many characters it has.

Relevant Links

๐Ÿ’ฌ Hint: 1

You should split the string into an array of words.

try to solve the problem now

๐Ÿ’ฌ Hint: 2

You will need to figure out a way to keep track globally of the greatest current length.

try to solve the problem now

๐Ÿ’ฌ Hint: 3

Remember how to get the length of elements on the array? Array[index].length.

try to solve the problem now

Spoiler Alert!

687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif

Solution ahead!

๐Ÿ”ฐ Basic Code Solution:

function findLongestWord(str) {
  var words = str.split(' ');
  var maxLength = 0;

  for (var i = 0; i < words.length; i++) {
    if (words[i].length > maxLength) {
      maxLength = words[i].length;
    }
  }

  return maxLength;
}

๐Ÿš€ Run Code

Code Explanation:

Take the string and convert it into an array of words. Declare a variable to keep track of the maximum length and loop from 0 to the length of the array of words.

Then check for the longest word by comparing the current word to the previous one and storing the new longest word. At the end of the loop just return the number value of the variable maxLength.

Relevant Links

๐ŸŒป Intermediate Code Solution:

Using .reduce()

function findLongestWord(s) {
  return s.split(' ')
    .reduce(function(x, y) {
      return Math.max(x, y.length)
    }, 0);
}

๐Ÿš€ Run Code

Code Explanation:

For more information on reduce click here.
In case youโ€™re wondering about that 0 after the callback function, it is used to give an initial value to the x, so that Math.max will know where to start.

Relevant Links

๐Ÿšจ Advanced Code Solution:

Using recursiveness

function findLongestWord(str) {

  //split the string into individual words 
  //(important!!, you'll see why later)
  str = str.split(" ");

  //str only has 1 element left that is the longest element, 
  //return the length of that element
  if(str.length == 1){
    return str[0].length;
  }

  //if the first element's length is greater than the second element's (or equal) 
  //remove the second element and recursively call the function)
  if(str[0].length >= str[1].length){
    str.splice(1,1);
    return findLongestWord(str.join(" "));
  }

  //if the second element's length is greater thant the first element's start 
  //call the function past the first element 
  if(str[0].length <= str[1].length){
    // from the first element to the last element inclusive.
    return findLongestWord(str.slice(1,str.length).join(" "));
  }
}

๐Ÿš€ Run Code

Code Explanation:

The first line splits the string into individual words. Then we check if str only has 1 element left then that is the longest element and we return it. If the first elementโ€™s length is greater than the second elementโ€™s (or equal), we remove the second element and recursively call the function findLongestWord. However, if the second elementโ€™s length is greater thant the first elementโ€™s start, then we call the function past the first element.

Relevant Links

๐Ÿ† Credits:

If you found this page useful, you can give thanks by copying and pasting this on the main chat:

Thanks @Rafase282 @shadowfool @Hallaathrad for your help with Algorithm: Find the Longest Word in a String

๐Ÿ“‹ NOTES FOR CONTRIBUTIONS:

  • โš  DO NOT add solutions that are similar to any existing solutions. If you think it is similar but better, then try to merge (or replace) the existing similar solution.
  • Add an explanation of your solution.
  • Categorize the solution in one of the following categories โ€” Basic, Intermediate and Advanced. ๐Ÿšฅ
  • Please add your username only if you have added any relevant main contents. (โš  DO NOT remove any existing usernames)

See ๐Ÿ‘‰ Wiki Challenge Solution Template for reference.