翻转单词序列
牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“nowcoder. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a nowcoder.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
Input: “nowcoder. a am I”
Output: “I am a nowcoder.”
class Solution {
public:
//找到空格,分解出子单词,插入到res的最前面并补上空格,注意原string的最后一个词最后单独插入,并且最后注意结果sting末尾的空格
//也可使用辅助栈
string ReverseSentence(string str) {
if(str.length()==0)
return "";
string res = "";
int headIndex = 0;
for(int i=0; i<str.length(); ++i)
{
if(str[i]== ' ')
{
string subString = str.substr(headIndex, i - headIndex);
res = subString + ' ' + res;
headIndex = i+1;
}
}
if(headIndex<=str.length()-1) //原string的最后一个词最后单独插入
{
string lastStr = str.substr(headIndex, str.length()-headIndex);
res = lastStr + ' ' + res;
}
res = res.substr(0,res.length()-1); //注意结果sting末尾的空格消去
return res;
}
};