1. 程式人生 > >1033 舊鍵盤打字(20 分)

1033 舊鍵盤打字(20 分)

ios class 出現 輸出 在哪裏 包括 psu 結果 cin

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

輸入格式:

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

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

輸出格式:

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

輸入樣例:

7+IE.
7_This_is_a_test.

輸出樣例:

_hs_s_a_tst
//做這道題的時候,我和寶玉有同一種感覺,這道題我好像在哪裏見過
#include<iostream>
using namespace std;
int main(){
    string a,b,c;//a是壞鍵字符串,b是輸入的字符串,c是應該輸出的字符串
    getline(cin,a);//這裏一定要用getline,因為他給你的字符串裏面可能有空格之類的
    cin>>b;
    int m=0;
    int k=0;
    if(a.find(+)<a.length())m=1;//如果上檔鍵壞了,就將m置為1
for(int i=0;i<b.length();i++){ if(a.find(b[i])<a.length())continue;//如果能在壞鍵字符串中找到b[i],不作處理 else if(m==1&&b[i]>=A&&b[i]<=Z)continue;//如果上檔鍵是壞的,b[i]是大寫字母,也不做處理 else if(a.find(toupper(b[i]))<a.length())continue;//因為給的壞件是以大寫字母形式展現的,所以如果b[i]的大寫形式可以在壞鍵中找到,不作處理
else {//以上情況都沒有發生,就是好的鍵 c+=b[i]; k=1; } } if(k)cout<<c;//如果有好鍵就輸出字符串,沒有就輸出空行 else cout<<"\n"; }

1033 舊鍵盤打字(20 分)