PAT乙級1029舊鍵盤
阿新 • • 發佈:2018-11-11
題目描述:
舊鍵盤上壞了幾個鍵,於是在敲一段文字的時候,對應的字元就不會出現。現在給出應該輸入的一段文字、以及實際被輸入的文字,請你列出肯定壞掉的那些鍵。
輸入格式:
輸入在 2 行中分別給出應該輸入的文字、以及實際被輸入的文字。每段文字是不超過 80 個字元的串,由字母 A-Z(包括大、小寫)、數字 0-9、以及下劃線 _(代表空格)組成。題目保證 2 個字串均非空。
輸出格式:
按照發現順序,在一行中輸出壞掉的鍵。其中英文字母只輸出大寫,每個壞鍵只輸出一次。題目保證至少有 1 個壞鍵。
輸入樣例:
7_This_is_a_test
_hs_s_a_es
輸出樣例:
7TI
程式碼如下:
#include <iostream>
#include <cctype>
using namespace std;
int main()
{
string a,b,sum;
cin>>a>>b;
for(int i=0,j=0;i<a.size();i++){
if(a[i]==b[j]) {
j++;
continue;
}
if(a[i]!= b[j]) {
if(islower(a[i])) a[i]=char(toupper(a[i]));
if(isdigit(a[i])&&sum.find(a[i])==-1) {
cout<<a[i];
sum+=a[i];
}
if(!isdigit(a[i])&&sum.find(a[i])==-1) {
cout<< char(toupper(a[i]));
sum+=a[i];
}
}
}
return 0;
}
來總結一下:
1)讓b和a一個一個對應著找,sum用來存已經輸出過的字元,輸出之前先判斷它有沒有輸出過。
2)find函式,如果找到了,則返回第一個找到的位置,否則返回-1。
幾個小用法:
- s1.find(s2);在s1中找子串s2。
- s1.find(s2, 2) ; 從S1的第二個字元開始查詢子串S2