一、题目
给定一个仅包含大小写字母和空格 ' '
的字符串,返回其最后一个单词的长度。
如果不存在最后一个单词,请返回 0 。
说明:一个单词是指由字母组成,但不包含任何空格的字符串。
示例:
输入: "Hello World" 输出: 5
二、题解思路
- 题解思路1:遍历字符串,如果字符不是空格,就将字符叠加到中间变量temp上,遇到空格,则将上一次叠加后的单词存到vector中,然后temp赋值为"",继续查找。
- 题解思路2:先将字符串后面的空格删掉,然后从后遍历找到最后一个单词,返回长度。
三、代码实现
- C++代码实现思路1
class Solution {
public:
int lengthOfLastWord(string s)
{
string temp = "";
vector<string> nums;
for(int i = 0;i<s.size();i++)
{
if(s[i] != ' ')
{
temp += s[i];
if(i+1 == s.size())
nums.push_back(temp);
}
else
{
nums.push_back(temp);
temp = "";
}
}
for(int i = nums.size()-1;i>=0;i--)
{
if(nums[i] != "")
return nums[i].size();
}
return 0;
}
};
- C++代码实现思路2
class Solution {
public:
int lengthOfLastWord(string s)
{
string temp = "";
while(s[s.size()-1] ==' ') //删除字符串后面的空格
{
s.erase(s.size()-1,1);
}
if(s == "")
return 0;
else
{
int j = s.size()-1;
while(s[j] != ' ' && j>=0) //找最后一个单词
{
temp += s[j];
j--;
}
return temp.size();
}
}
};