1. 程式人生 > >1029 舊鍵盤

1029 舊鍵盤

題目資訊:

舊鍵盤上壞了幾個鍵,於是在敲一段文字的時候,對應的字元就不會出現。現在給出應該輸入的一段文字、以及實際被輸入的文字,

請你列出肯定壞掉的那些鍵。

輸入格式:

輸入在2行中分別給出應該輸入的文字、以及實際被輸入的文字。每段文字是不超過80個字元的串,由字母A-Z(包括大、小寫)、

數字0-9、以及下劃線“_”(代表空格)組成。題目保證2個字串均非空。

輸出格式:

按照發現順序,在一行中輸出壞掉的鍵。其中英文字母只輸出大寫,每個壞鍵只輸出一次。題目保證至少有1個壞鍵。

輸入樣例:

7_This_is_a_test

_hs_s_a_es

輸出樣例:

7TI

程式碼示例:

#include <iostream>
#include <algorithm> #include <cmath> #include <cstdio> #include <cstring> #include <cctype> using namespace std; char str1[80],str2[80]; void solve() { bool flag[128]; //flag[ch] = true for(int i = 0; i < 128; i ++){ flag[i] = false; } char ch; for(int i=0
,j=0;str1[i];) { if(str1[i]==str2[j]) i++,j++; else { ch=str1[i]; if(ch>='a' && ch<='z') ch=ch-32; if(!flag[ch]) cout<<ch; flag[ch]=true; i++; } } cout<<endl; } int main() { cin>>str1>>str2; solve(); system("
pause"
); return 0; }
分析:

本題主要考察字串的處理問題,關鍵在於鍵盤損壞的字元的處理,遍歷兩個字串,比較他們相應位置的字元

看看flag[i]=true是否成立,如果是false,則輸出,true已經輸出一次,不需要重複輸出,輸出之前需要判斷大小寫字母

判斷大小寫字母可以用語句也可以呼叫函式:islower(ch),轉換為大寫:ch=toupeer(ch)。這裡我使用的是if()判斷語句,

然後ch=ch-32。