1. 程式人生 > 其它 >1029 舊鍵盤 (20分)

1029 舊鍵盤 (20分)

技術標籤: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; }