题目描述
牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
首先利用这一个句子中每个单词之间都会有一个空格的特点,为这个句子最后加上一个空格,方便识别最后一个单词,遍历整个句子,每现一个空格,就说明已经发现了一个单词,所以将这个单词顺序翻转,如题例,为 .tneduts,然后再向后遍历,以同样的方式翻转每个单词,最终得到:.tneduts a ma I。然后将整个句子翻转,得到I am a student. 至此结束。
代码如下:
class Solution {
public:
string ReverseSentence(string str) {
if(str.empty())
return "";
str+=' ';
auto len=str.size();
int index=0;
for(int i=0;i<len+1;i++)
{
if(str[i]==' ')
{
Reverse(str,index,i-1);
index=i+1;
}
}
str=str.substr(0,len);
Reverse(str,0,len-1);
return str;
}
void Reverse(string &s,int i,int j)
{
while(i<j)
{
swap(s[i],s[j]);
i++;
j--;
}
}
};