Length of Last Word
Solution 1
其实体面有一种情形没说清楚,就是如果结尾有连续个空格,结果是0还是空格前词的长度。(实际上答案是后者)于是这个题就变的很简单,我们就找最后一个词就可以了:连续个非空格字符。
首先找到词尾,主要是应对上述结尾存在连续个空格的情形。
然后根据词尾找到词头,连续个非空字符。
- 时间复杂度: O ( N ) O(N) O(N),其中 N N N为输入字符串的长度,但是实际上远低于线性时间
- 空间复杂度: O ( 1 ) O(1) O(1),仅维护常数个状态变量
class Solution {
public:
int lengthOfLastWord(string s) {
int length = s.size();
int end = s.size() - 1;
while (end >= 0 && s.at(end) == ' ') end--; // 滤掉所有结尾的空格
int start = end;
while(start >= 0 && s.at(start) != ' ') start --; // 单词内容,向左
int ans = end - start;
return ans;
}
};
Solution 2
Solution 1的Python实现
class Solution:
def lengthOfLastWord(self, s: str) -> int:
end = len(s) - 1
while end >= 0 and s[end] == ' ': end -= 1
start = end
while start >= 0 and s[start] != ' ': start -= 1
ans = end - start
return ans