1. 程式人生 > >PAT乙級1033舊鍵盤打字

PAT乙級1033舊鍵盤打字

題目描述: 舊鍵盤上壞了幾個鍵,於是在敲一段文字的時候,對應的字元就不會出現。現在給出應該輸入的一段文字、以及壞掉的那些鍵,打出的結果文字會是怎樣?

輸入格式: 輸入在 2 行中分別給出壞掉的那些鍵、以及應該輸入的文字。其中對應英文字母的壞鍵以大寫給出;每段文字是不超過 10 ​5 ​​ 個字元的串。可用的字元包括字母 [a-z, A-Z]、數字 0-9、以及下劃線 _(代表空格)、,、.、-、+(代表上檔鍵)。題目保證第 2 行輸入的文字串非空。

注意:如果上檔鍵壞掉了,那麼大寫的英文字母無法被打出。

輸出格式: 在一行中輸出能夠被打出的結果文字。如果沒有一個字元能被打出,則輸出空行。

輸入樣例: 7+IE. 7_This_is_a_test. 輸出樣例: _hs_s_a_tst

程式碼如下:

#include <iostream>
#include <cctype>
using namespace std;

int main()
{
    string s1,s2;
    getline(cin,s1);
    cin>>s2;
    for(int i=0;i<s2.size();i++){
        if(s1.find(toupper(s2[i]))!=string::npos) continue;
        if(s1.find('+')!=string::npos&&isupper
(s2[i])) continue; cout<<s2[i]; } return 0; }

來總結一下: 1)題目當中說保證第2行輸入的字串非空,那麼第一個字串可能是空,所以需要用getline來進行輸入,直接讀取一行。 2)只有‘+’是上檔鍵,我之前以為那四個全都是上檔鍵。 3)有一點比較疑惑,如果沒有一個字能打出來,則列印空行,沒管它也能過。。。。。。