板栗說算法 之 PAT 乙級 1009 說反話(全方面解析)

一、題目

給定一句英語,要求你編寫程序,將句中所有單詞的順序顛倒輸出。

輸入格式:

測試輸入包含一個測試用例,在一行內給出總長度不超過 80 的字符串。字符串由若干單詞和若干空格組成,其中單詞是由英文字母(大小寫有區分)組成的字符串,單詞之間用 1 個空格分開,輸入保證句子末尾沒有多餘的空格。

輸出格式:

每個測試用例的輸出佔一行,輸出倒序後的句子。

輸入樣例:

Hello World Here I Come

輸出樣例:

Come I Here World Hello

二、思路

1.看到顛倒輸出,我首先就想到了STL裏的反向迭代器reverse_iterator。

2.使用什麼接收輸入呢?

既然想到了迭代器,那麼我們當然使用支持反向迭代器的容器了,這裏我們選用vector。

3.選擇一行行輸入還是一個個單詞輸入?

從題目可知,顛倒輸出並不是字符,而是單詞,那麼我們當然使用一個個單詞錄入vector。

4.如何判斷結束輸入

當getchar == '\n'時結束。

三、代碼實現

#include <iostream>
using namespace std;

#include <vector>
#include <string>

int main()
{
    //字符串容器
    vector<string> str_array;
    
    //臨時變量,用來錄入
    string temp;
    
    //一直輸入直到結束
    while(cin >> temp)
    {
        //容器尾部錄入
        str_array.push_back(temp);
        
        //取得字符
        char ch = getchar();
        
        //如果是‘\n’結束
        if(ch == '\n')
        {
            break;
        }
    }
    
    //反向輸出
    for(vector<string>::reverse_iterator it = str_array.rbegin();it < str_array.rend(); it++)
    {
        cout << *it;
        if(it != str_array.rend()-1)
        {
            cout << " ";
        }
    }
}

 

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