题目描述
给定一个字符串s,s只包含大小写字母和空格。返回s中最后一个单词的长度。
如果s中没有单词,返回0。
注意: 一个单词是指一段连续的不含有空格的字符序列。
样例
输入:"Hello World"
输出:5
算法
(遍历) $O(n)$
定义两个变量:res
, sum
,分别表示当前最后一个单词(已遍历完)的长度,以及当前单词(正在遍历,但还没遍历完)的长度。
然后我们遍历字符串,
- 如果遇到非空格字符,让
sum
加1; - 如果遇到空格,判断
sum
是否为0,如果大于0,说明已经遍历完一个新单词,清空sum
,更新res
。
时间复杂度分析:总共循环一遍,时间复杂度 $O(n)$。
C++ 代码
class Solution {
public:
int lengthOfLastWord(string s) {
int sum = 0, res = 0;
for (int i = 0; i < s.size(); i ++ )
if (s[i] == ' ')
{
if (sum) res = sum;
sum = 0;
}
else
sum ++ ;
if (sum) res = sum;
return res;
}
};