题目:
给定一个仅包含大小写字母和空格 ' '
的字符串,返回其最后一个单词的长度。
如果不存在最后一个单词,请返回 0 。
说明:一个单词是指由字母组成,但不包含任何空格的字符串。
示例:
输入: "Hello World" 输出: 5
解题思路:
用空格来标识一个单词的结束,并将每个单词的length存入到向量lengths中
代码:
class Solution {
public:
int lengthOfLastWord(string s) {
int length = 0;
vector<int> lengths;
lengths.push_back(length);
for(int i=0;i<s.length();i++){
if(s.at(i) == ' '){
if(length>0)
lengths.push_back(length);
length=0;
}
else if(i == s.length()-1 && s.at(i) != ' '){
length++;
lengths.push_back(length);
}
else
length++;
}
// lengths.push_back(length);
return lengths.back();
}
};
百度之后发现可以先去掉首尾的空格,代码可以简化一些,但是内存使用和用时好像也没有很大的变化
代码:
class Solution {
public:
int lengthOfLastWord(string s) {
s.erase(s.find_last_not_of(" ") + 1);
s.erase(0, s.find_first_not_of(" "));
int length = 0;
for(int i=0;i<s.length();i++){
if(s.at(i) != ' '){
length++;
}
else
length = 0;
}
return length;
}
};