58. Length of Last Word
题目大意
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.
中文释义
给定一个由单词和空格组成的字符串 s
,返回字符串中最后一个单词的长度。
一个单词是由非空格字符组成的最大子串。
Example
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.
解题思路
要求解字符串中最后一个单词的长度,可以采用以下步骤:
-
初始化两个变量
length
和index
,其中length
用于存储最后一个单词的长度,index
初始化为字符串s
的末尾下标s.size() - 1
。 -
首先,通过循环跳过末尾的空格字符,即当
s[index]
是空格字符时,将index
减1,直到遇到非空格字符或到达字符串的开头。 -
接下来,通过循环计算最后一个单词的长度,即当
s[index]
不是空格字符时,将length
增加1,同时将index
减1,直到遇到空格字符或到达字符串的开头。 -
返回
length
即为最后一个单词的长度。
这个算法利用两个循环,首先跳过末尾的空格字符,然后计算最后一个单词的长度。
class Solution {
public:
int lengthOfLastWord(string s) {
int length = 0, index = s.size() - 1;
// 跳过末尾空格
while (index >= 0 && s[index] == ' ') {
index--;
}
// 计算最后一个单词的长度
while (index >= 0 && s[index] != ' ') {
length++;
index--;
}
return length;
}
};