题目:
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.
Example:
Input: "Hello World"
Output: 5
这道题其实没什么使用到的技巧,就老老实实地遍历就可以了,然而其中有坑——第一次提交的时候的思路是直接从后往前遍历,遇到空格或者到头了就停下,已经遍历过的字符数就是答案,开开心心提交发现WA,没通过的test case是字符串末尾为空格的,完全没有考虑到这种情况,于是就在前面加了一段把后面的空格给去掉,然后由于之前用的是for循环导致这样的话写起来就不优雅了而且有很多小细节的毛病,于是参照了discussion里大佬们的解法采用了while循环,终于变得好看了一些。代码如下,运行时间0ms,复杂度O(n):
class Solution {
public:
int lengthOfLastWord(string s) {
int i = s.size() - 1;
while (s[i] == ' ') {
i--;
}
int result = 0;
while (i >= 0 && s[i] != ' ') {
i--;
result++;
}
return result;
}
};