Welcome to Subscribe On Youtube

58. Length of Last Word

Description

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 1:

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

Example 2:

Input: s = "   fly me   to   the moon  "
Output: 4
Explanation: The last word is "moon" with length 4.

Example 3:

Input: s = "luffy is still joyboy"
Output: 6
Explanation: The last word is "joyboy" with length 6.

 

Constraints:

  • 1 <= s.length <= 104
  • s consists of only English letters and spaces ' '.
  • There will be at least one word in s.

Solutions

Solution 1: Reverse Traversal + Two Pointers

We start traversing from the end of the string s, find the first character that is not a space, which is the last character of the last word, and mark the index as i. Then continue to traverse forward, find the first character that is a space, which is the character before the first character of the last word, and mark it as j. Then the length of the last word is ij.

The time complexity is O(n), where n is the length of the string s. The space complexity is O(1).

  • class Solution {
        public int lengthOfLastWord(String s) {
            int i = s.length() - 1;
            while (i >= 0 && s.charAt(i) == ' ') {
                --i;
            }
            int j = i;
            while (j >= 0 && s.charAt(j) != ' ') {
                --j;
            }
            return i - j;
        }
    }
    
  • class Solution {
    public:
        int lengthOfLastWord(string s) {
            int i = s.size() - 1;
            while (~i && s[i] == ' ') {
                --i;
            }
            int j = i;
            while (~j && s[j] != ' ') {
                --j;
            }
            return i - j;
        }
    };
    
  • class Solution:
        def lengthOfLastWord(self, s: str) -> int:
            i = len(s) - 1
            while i >= 0 and s[i] == ' ':
                i -= 1
            j = i
            while j >= 0 and s[j] != ' ':
                j -= 1
            return i - j
    
    
  • func lengthOfLastWord(s string) int {
    	i := len(s) - 1
    	for i >= 0 && s[i] == ' ' {
    		i--
    	}
    	j := i
    	for j >= 0 && s[j] != ' ' {
    		j--
    	}
    	return i - j
    }
    
  • function lengthOfLastWord(s: string): number {
        let i = s.length - 1;
        while (i >= 0 && s[i] === ' ') {
            --i;
        }
        let j = i;
        while (j >= 0 && s[j] !== ' ') {
            --j;
        }
        return i - j;
    }
    
    
  • /**
     * @param {string} s
     * @return {number}
     */
    var lengthOfLastWord = function (s) {
        let i = s.length - 1;
        while (i >= 0 && s[i] === ' ') {
            --i;
        }
        let j = i;
        while (j >= 0 && s[j] !== ' ') {
            --j;
        }
        return i - j;
    };
    
    
  • class Solution {
        /**
         * @param String $s
         * @return Integer
         */
        function lengthOfLastWord($s) {
            $count = 0;
            while ($s[strlen($s) - 1] == ' ') {
                $s = substr($s, 0, -1);
            }
            while (strlen($s) != 0 && $s[strlen($s) - 1] != ' ') {
                $count++;
                $s = substr($s, 0, -1);
            }
            return $count;
        }
    }
    
  • public class Solution {
        public int LengthOfLastWord(string s) {
            int i = s.Length - 1;
            while (i >= 0 && s[i] == ' ') {
                --i;
            }
            int j = i;
            while (j >= 0 && s[j] != ' ') {
                --j;
            }
            return i - j;
        }
    }
    
  • impl Solution {
        pub fn length_of_last_word(s: String) -> i32 {
            let s = s.trim_end();
            let n = s.len();
            for (i, c) in s.char_indices().rev() {
                if c == ' ' {
                    return (n - i - 1) as i32;
                }
            }
            n as i32
        }
    }
    
    

All Problems

All Solutions