// B1029 旧键盘 (20分).cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
/*
learn && wrong:
1、思路
如何在不区分大小写的情况下,判断在第一个字符串中出现一次 ——枚举
如何保证同一个字符串(不区分大小写)只输出一次,且都是大写输出——hash
3、空格也是需要判断的内容,不要遗漏了
3、大小写不区分,小写字符转成大写字目,减去32,为什么!ASCII码,大小写相差32,小写数值比较大!记住这一结论
4、HASH大小设置成题目给的,一般设置成128,因为ASCII码也就127个,包含了键盘上所有了!,所以HASHTABLE[C1]是对的!
题意:
1、
2、一整个数组,置为true,
然后第二个散列进去,置为false,
3、遍历数组,如果是false,就输出?那我怎么还原呀
*/
include <iostream>
include <cstring>
using namespace std;
int main()
{
char str1[100], str2[100];
bool hashtable[128] = { false }; //用hashtable来标记字符是否被输出国
cin>>str1; //(!!!)之前需要换行是?
cin>>str2;
int len1 = strlen(str1);
int len2 = strlen(str2);
for (int i = 0;i < len1;++i) { //枚举第一个字符串中的每个字符
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;
}