// A1050 String Subtraction (20分).cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
/*
考察:hash+类似旧键盘打字
题意:
给一个字符串1,再给另一个字符串2,要求删除字符串1中出现的字符串2的值
包括空格,跟所有可见的ASCII
解题:
1、第一个字符串存起来,第二个做hash
2、遍历第一个字符串,如果hash为true,不输出,不然接着输出
learn && wrong;
1、hashtable设置成256,并且,是可以用字符为下标的
2、可见的ASCII codes,不可见是0~31以及127的,答案给了128个而已,也就是大小写,+数字
3、i < strlen(str)是个不好的习惯,因为strlen时间复杂度就是O(n)了
4、使用了iostream和vector + using namespace std,不要用hash,会重名,跟c.math中的y1一样
5、可以用getchar一个一个输入,见P142,太慢,不干,就跟str[num++]一样
也就三步,
while(true),
str[len1++],
if str[len1 - 1]== ‘\n’ ;break
*/
#include <iostream>
#include <cstring>
using namespace std;
char str1[10010];
char str2[10010];
bool hash1[256];
int main()
{
cin.getline(str1, 10010);
cin.getline(str2, 10010);
int len2 = strlen(str2);
int len1 = strlen(str1);
memset(hash1, true, sizeof(hash1));
for (int i = 0;i < len2;++i) { //标记字符串2中的字符
hash1[str2[i]] = false;
}
for (int i = 0;i < len1;++i) {
if (hash1[str1[i]] == false) continue;
else cout << str1[i];
}
return 0;
}