string& reverse( string& sentence );
输入:将一个英文语句以单词为单位逆序排放。
输出:得到逆序的句子
样例输入:
I am a boy
样例输出:
boy a am I
#include <iostream>
#include <string>
using namespace std;
string& reverse( string& sentence );
int main( void )
{
string sentence;
getline( cin, sentence );
cout << reverse( sentence ) << endl;
return 0;
}
string& reverseChar( string& str, int left, int right )
{
char tmp;
for( ; left < right; ++left, --right ){
tmp = str[left];
str[left] = str[right];
str[right] = tmp;
}
return str;
}
string& reverse( string& sentence )
{
reverseChar( sentence, 0, sentence.length() - 1 );
int i, j;
for( i = 0, j = i; i < sentence.length() && j < sentence.length(); ++j ){
if( sentence[j] == ' ' ){
reverseChar( sentence, i, j - 1 );
i = j + 1;
}
}
reverseChar( sentence, i, j - 1 );
return sentence;
}