Title description
Dispose an English sentence in reverse order by word. For example, "I am a boy", after the reverse order,
all the words "boy a am I" are separated by a space. In the statement, except for the English letters, they no longer contain other characters
Interface Description
/ **
* Reverse sentence
*
* @param sentence original sentence
* @return Reverse sentence
* /
public String reverse (String sentence);
Enter description:
Dispose an English sentence in reverse order by word.
Output description:
Get the sentence in reverse order
Example 1
Input
I am a boy
Output
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;
}