分析
返回一句话的最后一个单词:
例如“What is your name”,最后一个单词就是"name"。
代码
一整句话是一个字符串,以“ ”空格作为分隔符,利用rfind函数从后往前查找。但是要注意字符串最后是空格的情况(“Who are you ”)。
我们先看下如何返回最后一个单词个数。
int lengthOfLastWord(string s)
{
int oldpos = s.size() - 1;
while (oldpos >= 0)
{
int newpos = s.rfind(' ', oldpos);
if (newpos == string::npos)
return oldpos + 1; //未找到
else if (newpos == oldpos)
--oldpos; //说明最右端为空格,接着往前寻找
else
return (oldpos - newpos); //找到了
}
return 0; //n < 0,即s为空字符串
}
返回最后一个单词的逻辑与上面代码几乎一样。
string LastWord(string s)
{
int oldpos = s.size() - 1;
while (oldpos >= 0)
{
int newpos = s.rfind(' ', oldpos);
if (newpos == string::npos)
{
return s.substr(0, oldpos + 1);
}
else if (newpos == oldpos)
{
--oldpos;
}
else
{
return s.substr(newpos + 1, oldpos - newpos);
}
}
return ""; //n < 0,即s为空字符串
}
测试代码
示例1
输入: “Hello World”, “Hello World “,“World”,” Hello “,” World”
lengthOfLastWord输出: 5
LastWord输出:World
示例2
输入: “”
lengthOfLastWord输出: 0
LastWord输出:""