[編程題]【中級】單詞倒排

[編程題]【中級】單詞倒排

對字符串中的所有單詞進行倒排。

說明:

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;
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章