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; } }