PAT-B 1033. 旧键盘打字(20)

来源:互联网 发布:云联惠平台下载软件 编辑:程序博客网 时间:2024/06/05 05:59

题目链接在此。

思路

再读入时,用一个HashTable数组保存键盘的好坏情况,需要注意“+”上档键的情况;在输出可以输出的时候,判断键是好的则输出即可。

AC代码

#include<stdio.h>#include<string.h>char s2[100010]; int main(){    char s1[100] ;    bool HashTable[256];    int len;    //init for HashTable//  for(int i = 0; i < 128; i++){//      HashTable[i] = true;//  }    memset(HashTable, true, sizeof(HashTable));    gets(s1);    gets(s2);//  len = strlen(s1);    for(int i = 0 ; i < strlen(s1); i++){        char c = s1[i];        HashTable[c] = false;        if(c == '+'){ //上档键坏了             char temp;            for(temp = 'A'; temp <= 'Z'; temp++){                 HashTable[temp] = false;  //所有大写字母都不能输出             }        }else{ //上档键没坏             if(c >= 'A' && c <= 'Z'){ //如果是大写字母,则相应的小写字母也是坏的                 c = s1[i]-'A'+'a';  //准换成小写字母                 HashTable[c] = false; //对应的小写字母也不能输出,因为是同一个键             }         }    }    len = strlen(s2);    for(int i = 0; i < len; i++){        char c = s2[i];        if(HashTable[c] == true){ //此时c字符没坏             printf("%c",c);        }    }    printf("\n");     return 0; }

掉坑!!
记得把strlen(str)求得的长度用一个变量保存起来,减少计算次数!
这个题如果不保存,直接写在for循环里,最后一个测试点运行超时!

0 0