對字符串中的所有單詞進行倒排。
說明:
1、每個單詞是以26個大寫或小寫英文字母構成;
2、非構成單詞的字符均視爲單詞間隔符;
3、要求倒排後的單詞間隔符以一個空格表示;如果原字符串中相鄰單詞間有多個間隔符時,倒排轉換後也只允許出現一個空格間隔符;
4、每個單詞最長20個字母;
輸入描述:
輸入一行以空格來分隔的句子
輸出描述:
輸出句子的逆序
輸入例子:
I am a student
輸出例子:
student a am I
解題思路
使用C++輸入流提取單詞,具體見註釋。。
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
string str;
while( getline(cin,str) ){
/*把所以無關字符修改成空格(後續提取字符串時自動忽略空格)*/
for( int i = 0; i < str.length(); ++i ){
if( !((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z')) ){
str[i] = ' ';
}
}
/*使用輸入流,提取字符串到字符串數組sstr中*/
istringstream iss(str);
string s;
string sstr[100001];
int l = 0;
while( iss>>s ){
sstr[l++] = s;
}
/*反向輸出*/
for( int k = l-1; k > 0; --k ){
cout<<sstr[k]<<" ";
}
cout<<sstr[0]<<endl;
}
return 0;
}