pat advanced 1050

来源:互联网 发布:房地产中介网站源码 编辑:程序博客网 时间:2024/05/22 03:19

题目: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;}


0 0