1029 舊鍵盤 (20分)
阿新 • • 發佈:2021-01-24
技術標籤:C++
舊鍵盤上壞了幾個鍵,於是在敲一段文字的時候,對應的字元就不會出現。現在給出應該輸入的一段文字、以及實際被輸入的文字,請你列出肯定壞掉的那些鍵。
輸入格式:
輸入在 2 行中分別給出應該輸入的文字、以及實際被輸入的文字。每段文字是不超過 80 個字元的串,由字母 A-Z(包括大、小寫)、數字 0-9、以及下劃線 _(代表空格)組成。題目保證 2 個字串均非空。
輸出格式:
按照發現順序,在一行中輸出壞掉的鍵。其中英文字母只輸出大寫,每個壞鍵只輸出一次。題目保證至少有 1 個壞鍵。
輸入樣例:
7_This_is_a_test
_hs_s_a_es
輸出樣例:
7TI
原本想用STL中的set來實現的,但是最後輸出的結果順序不對,就自己寫了個數據結構。
#include<iostream>
#include<string.h>
#define MAX 100
using namespace std;
class myset{
char *queue;
int tail;
int size;
public:
myset(int n=0){
if(n==0)
this->queue = NULL;
else
this->queue = new char[n];
size = n;
tail=0;
}
void insert(char c){
int i=0;
for(i= 0;i<tail;i++){
if(queue[i]==c) break;
}
if(i==tail){
queue[tail] = c;
tail++;
}
}
void disp(){
for(int i=0;i<tail;i++){
cout<<queue[i];
}
}
};
int main(){
char oringin[MAX];
char realinput[MAX];
myset broken(MAX);
cin.getline(oringin,MAX) ;
cin.getline(realinput,MAX);
int i=0,j=0;
for(i=0;i<strlen(oringin);i++){
if(oringin[i]!=realinput[j]){
char brokenkey = oringin[i];
if(brokenkey>='a'&&brokenkey<='z'){
brokenkey = brokenkey - 'a' + 'A';
}
broken.insert(brokenkey);
}
else{
j++;
}
}
broken.disp();
return 0;
}