// B1029 舊鍵盤 (20分).cpp : 此文件包含 "main" 函數(shù)。程序執(zhí)行將在此處開始并結(jié)束。
/*
learn && wrong:
1削彬、思路
如何在不區(qū)分大小寫的情況下乌妙,判斷在第一個(gè)字符串中出現(xiàn)一次 ——枚舉
如何保證同一個(gè)字符串(不區(qū)分大小寫)只輸出一次,且都是大寫輸出——hash
3靶端、空格也是需要判斷的內(nèi)容谎势,不要遺漏了
3、大小寫不區(qū)分杨名,小寫字符轉(zhuǎn)成大寫字目,減去32脏榆,為什么!ASCII碼台谍,大小寫相差32须喂,小寫數(shù)值比較大!記住這一結(jié)論
4趁蕊、HASH大小設(shè)置成題目給的坞生,一般設(shè)置成128,因?yàn)锳SCII碼也就127個(gè)掷伙,包含了鍵盤上所有了是己!,所以HASHTABLE[C1]是對(duì)的炎咖!
題意:
1赃泡、
2、一整個(gè)數(shù)組乘盼,置為true,
然后第二個(gè)散列進(jìn)去升熊,置為false,
3绸栅、遍歷數(shù)組级野,如果是false,就輸出?那我怎么還原呀
*/
include <iostream>
include <cstring>
using namespace std;
int main()
{
char str1[100], str2[100];
bool hashtable[128] = { false }; //用hashtable來(lái)標(biāo)記字符是否被輸出國(guó)
cin>>str1; //(!!!)之前需要換行是蓖柔?
cin>>str2;
int len1 = strlen(str1);
int len2 = strlen(str2);
for (int i = 0;i < len1;++i) { //枚舉第一個(gè)字符串中的每個(gè)字符
int j;
char c1, c2;
for (j = 0;j < len2;++j) {
c1 = str1[i];
c2 = str2[j];
if (c1 >= 'a' && c1 <= 'z') c1 -= 32;//(!!!)
if (c2 >= 'a' && c2 <= 'z') c2 -= 32;
if (c1 == c2) break;
}
if (j == len2 && hashtable[c1] == false) {//(!!!)c1
printf("%c", c1);
hashtable[c1] = true;
}
}
return 0;
}