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 $i - j$.
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 } }