DEV Community

shine
shine

Posted on

[📝LeetCode #58] Length of Last Word

🎀 The Problem

Given a string s consisting of words and spaces, return the length of the last word in the string.

A word is a maximal substring consisting of non-space characters only.

Example:

Input: s = "Hello World"
Output: 5
Explanation: The last word is "World" with length 5.

👩‍💻 My Answer

class Solution { public int lengthOfLastWord(String s) { boolean check = true; int count = 0; for (int i = 0; i < s.length(); i++) { char letter = s.charAt(i); if (check && letter != ' ') count++; else if (!check && letter != ' ') { count = 1; check = true; } else check = false; } return count; } } 
Enter fullscreen mode Exit fullscreen mode

Runtime & Memory

Pro & Con

  • ✅ Memory
  • ✖️ Runtime

💋 Ideal Answer

Approach

I read the solution post on LeetCode and found it is better to iterate backward because we are looking for the LAST word.

New Code

class Solution { public int lengthOfLastWord(String s) { int count = 0; for (int i = s.length() - 1; i >= 0; i--) { char letter = s.charAt(i); if (letter != ' ') { count++; } else if (count != 0 && letter == ' ') return count; } return count; } } 
Enter fullscreen mode Exit fullscreen mode

New Runtime & Memory

💡 What I Learned

  • Iterate backward!!! If you only care about the LAST word, iterate backward! The direction of iteration matters!

  • ALSO! You don't need boolean to check. You can just use COUNTER (integer) of the letter. If its 0, then ' ' is just the one after the last word. If its more than 0, then ' ' is the one between the second last and last one!

Top comments (0)