牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
这里要注意的是:虽然句子里单词的顺序是错误的但是单词里边的字母顺序是正确的,我们不能单纯的把整个字符串去翻转一下如果只是单纯的翻转字符串student. a am I就会变成i ma a .tneduts 这时候我们还需要把每个单词翻转过来。
class Solution {
public:
string ReverseSentence(string str) {
int left = 0;
int right = str.size() - 1;
while (left < right)
{
char temp = str[left];
str[left] = str[right];
str[right] = temp;
left++;
right--;
//student. a am I
//i ma a .tneduts
}
int i = 0;
while (i<str.size())
{
while (i < str.size() && str[i] == ' ')
i++;
//找到了第一个不是空格的位置
left = right = i;
while (i < str.size() && str[i] != ' ')
{
i++;
right++;
}
//找到空格的位置
Reverseword(str, left, right - 1);
}
return str;
}
void Reverseword(string &str, int left, int right)
{
while (left < right)
{
char temp = str[left];
str[left] = str[right];
str[right] = temp;
left++;
right--;
}
}
};
题目描述牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么? 这里要注意的是...