题目描述
将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符
接口说明
/**
* 反转句子
*
* @param sentence 原句子
* @return 反转后的句子
*/
public String reverse(String sentence);
输入描述:
将一个英文语句以单词为单位逆序排放。
输出描述:
得到逆序的句子
示例1
输入
I am a boy
输出
boy a am I
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
void myreverse(string &s, int pos1, int pos2) {
for (int i = 0; i <= (pos2 - pos1) / 2; ++i) {
char ch = s[pos1 + i];
s[pos1 + i] = s[pos2 - i];
s[pos2 - i] = ch;
}
}
string reverse(string sentense) {
int index = sentense.find(' ');
if (index == -1) {
myreverse(sentense, 0, sentense.size() - 1);
return sentense;
}
int pos = 0;
while (index != -1) {
myreverse(sentense, pos, index - 1);
pos = index + 1;
index = sentense.find(' ', pos);
}
myreverse(sentense, pos, sentense.size() - 1);
myreverse(sentense,0, sentense.size() - 1);
return sentense;
}
int main() {
string s;
getline(cin, s);
s = reverse(s);
cout << s << endl;
return 0;
}