Question

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

58. Length of Last Word

Given a string s consists of upper/lower-case alphabets and empty space characters ' ',
return the length of last word in the string.

If the last word does not exist, return 0.

Note: A word is defined as a character sequence consists of non-space characters only.

For example,
Given s = "Hello World",
return 5.

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

Java

  • 
    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();
    	        }
    
    	    }
    	}
    
    }
    
  • // 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(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
    
    

All Problems

All Solutions