B1029 旧键盘 (20分)

// 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

include

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;

}

你可能感兴趣的:(B1029 旧键盘 (20分))