1. 程式人生 > >1029.舊鍵盤(Hash雜湊)

1029.舊鍵盤(Hash雜湊)

1029. 舊鍵盤(20)

時間限制200 ms
記憶體限制65536 kB
程式碼長度限制8000 B
判題程式Standard作者CHEN, Yue

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

輸入格式:

輸入在2行中分別給出應該輸入的文字、以及實際被輸入的文字。每段文字是不超過80個字元的串,由字母A-Z(包括大、小寫)、數字0-9、以及下劃線“_”(代表空格)組成。題目保證2個字串均非空。

輸出格式:

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

輸入樣例:
7_This_is_a_test
_hs_s_a_es
輸出樣例:
7TI

提交代

#include <iostream> 
#include <cctype> 
#include <string>
using namespace std;
int main()
{
	string a, b;
	cin >> a >> b;
	char c[80]; //儲存壞的鍵盤字母 
	int flag, index = 0; 
	for (int i = 0; i < a.length(); i++) { //對比  用flag控制跳出迴圈或儲存 
		flag = 0;
		for (int j = 0; j < b.length(); j++) {
			if (a[i] == b[j]) {
				flag = 1;
				break;
			}
		}
		if (!flag) c[index++] = toupper(a[i]);
	}
	for (int i = 1; i < index; i++) { //將c中相同字母用‘#’代替 
		for (int j = 0; j < i; j++) {
			if (c[i] == c[j]) {
				c[i] = '#';
				break;	
			}	
		}
	}
	for (int i = 0; i < index; i++) { //輸出壞的鍵盤字母 
		if (c[i] != '#') 
			cout << c[i];
	}
	return 0;
}