Welcome to Subscribe On Youtube

Question

Formatted question description: https://leetcode.ca/all/58.html

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.

Algorithm

Preprocess the input string first, remove the spaces at the beginning and the end, and then use a counter to accumulate the length of the non-space string, and clear the counter when it encounters a space.

Code

  • 
    public class Length_of_Last_Word {
    
    	public class Solution_no_extra_space { // one scan
    	    public int lengthOfLastWord(String s) {
    	        if (s == null || s.length() == 0) {
    	            return 0;
    	        }
    
    	        int count = 0;
    	        for (int i = s.length() - 1; i >= 0; i--) {
    
    	            if (count == 0 && s.charAt(i) != ' ') { // skip spaces
    	                count++;
    	            } else if (count != 0 && s.charAt(i) == ' ') {
    	                break;
    	            } else if (('a' <= s.charAt(i) && s.charAt(i) <= 'z') || ('A' <= s.charAt(i) && s.charAt(i) <= 'Z')) {
    	                count++;
    	            }
    	        }
    
    	        return count;
    
    	    }
    	}
    
    	public class Solution {
    	    public int lengthOfLastWord(String s) {
    
    	        if (s == null || s.length() == 0) {
    	            return 0;
    	        }
    
    	        String[] array = s.split(" "); // @note: if input is string with spaces “ “, the array length is 0
    
    	        if (array.length == 0) {
    	            return 0;
    	        } else {
    	            return array[array.length - 1].length();
    	        }
    
    	    }
    	}
    
    }
    
    ############
    
    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;
        }
    }
    
  • // OJ: https://leetcode.com/problems/length-of-last-word/
    // Time: O(N)
    // Space: O(1)
    class Solution {
    public:
        int lengthOfLastWord(string s) {
            int i = s.size() - 1;
            while (i >= 0 && s[i] == ' ') --i;
            int j = i;
            while (i >= 0 && s[i] != ' ') --i;
            return j - i; 
        }
    };
    
  • 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
    
    ############
    
    class Solution(object):
      def lengthOfLastWord(self, s):
        """
        :type s: str
        :rtype: int
        """
        if len(s) == 0:
          return 0
        s = s.split()
        if len(s) > 0:
          return len(s[-1])
        return 0
    
    
  • 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 {
        s = s.trimEnd();
        const n = s.length;
        const index = s.lastIndexOf(' ');
        if (index !== -1) {
            return n - index - 1;
        }
        return n;
    }
    
    
  • /**
     * @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;
        }
    }
    
  • 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
        }
    }
    
    
  • 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;
        }
    }
    

All Problems

All Solutions