演算法學習之路|舊鍵盤打字

kissjz發表於2018-02-28

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

輸入格式

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

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

輸出格式

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

輸入樣例:
7+IE.
7_This_is_a_test.
輸出樣例:
_hs_s_a_tst
我的思路

很簡單,首先記錄那些壞的鍵,記錄到string中

然後根據string中的限制,判斷能否輸出即可。

注意:

要特殊對待上檔鍵。

大小不區分。

程式碼如下:

#include<iostream>

using namespace std;
int flag=0;
bool cancout(string limit,char ch){//判斷是否能夠輸出
    
    for(int i=0;i<limit.size();i++){
        
        if(toupper(limit[i])==toupper(ch)){
            
            return 0;
        }
        else if(limit[i]==`+`&&(ch>=`A`&&ch<=`Z`))
            return 0;
    }
    flag++;
    return 1;
}
int main(){
    string limit,all;
    cin>>limit>>all;
    
    for(int i=0;i<all.size();i++){
        if(cancout(limit, all[i])==1)//傳入每一個將要打出的字
            cout<<all[i];
    }
    
    
}


相關文章