题目:http://pat.zju.edu.cn/contests/pat-a-practise/1050
很坑爹,限时10ms,因为
int len = strlen(ch1);
for(int i = 0; i<len; ++i
写成了for(int i = 0; i<strlen(ch1); ++i)
所以一直有两个case TLE。
思路,先把字符串1存起来,字符串2用map或者一个数组关联起来,再遍历字符串1,有字符串2的不输出。
数组开128是因为英文ascii码小于128,因为可能有逗号句号空格这样的就不止26个英文字母了。
参考代码:
#include<cstdio>
#include<cstring>
using namespace std;
char ch1[10001];
int arr[128];
int main()
{
gets(ch1);
char ch;
while((ch = getchar()) != EOF)
{
arr[ch] = 1;
}
int len = strlen(ch1);//换成for(int i = 0; i<strlen(ch1); ++i) TLE
for(int i = 0; i<len; ++i)
{
if(!arr[ch1[i]])
{
printf("%c", ch1[i]);
}
}
return 0;
}