PAT乙級1033舊鍵盤打字
阿新 • • 發佈:2018-12-21
題目描述: 舊鍵盤上壞了幾個鍵,於是在敲一段文字的時候,對應的字元就不會出現。現在給出應該輸入的一段文字、以及壞掉的那些鍵,打出的結果文字會是怎樣?
輸入格式: 輸入在 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)有一點比較疑惑,如果沒有一個字能打出來,則列印空行,沒管它也能過。。。。。。