zoukankan      html  css  js  c++  java
  • PAT (Basic Level) Practise (中文)-1033. 旧键盘打字(20)

    PAT (Basic Level) Practise (中文)-1033. 旧键盘打字(20)  http://www.patest.cn/contests/pat-b-practise/1033

    旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键,打出的结果文字会是怎样?

    输入格式:

    输入在2行中分别给出坏掉的那些键、以及应该输入的文字。其中对应英文字母的坏键以大写给出;每段文字是不超过105个字符的串。可用的字符包括字母[a-z, A-Z]、数字0-9、以及下划线“_”(代表空格)、“,”、“.”、“-”、“+”(代表上档键)。题目保证第2行输入的文字串非空。

    注意:如果上档键坏掉了,那么大写的英文字母无法被打出。

    输出格式:

    在一行中输出能够被打出的结果文字。如果没有一个字符能被打出,则输出空行。

    输入样例:

    7+IE.
    7_This_is_a_test.
    

    输出样例:

    _hs_s_a_tst


    题目信息整理:
    1. 应该输入的文字中可能出现的字符有:a-z,A-Z,_(代表空格),‘,’,‘.’,‘-’。
    2. 坏掉的键中除了上条出现的字符外,还有一个上档键,用'+'表示。如果‘+’号出现,则大写的字符无法被敲出来。
    3. 如果没有字符显示,则输出空行。

    分析:
    1. 可能出现的字符只有 26+26+4 个,再加上上档键,所以第一行最多有 26+26+4+1 个字符 ,所以用hash表标记能否显示即可。
    如果一个大写字母出现,则表示这个大写字母对应的小写字母的按键已损坏,则大小写都无法显示;如果上档键损坏,则大写字母全部无法显示。
    2. 第二行字符串的字符,hash表中标记为无法显示,则不显示;未标记,则可以显示。所以,读一个字符处理一个即可,无须开内存。
    处理的过程就是判断能否显示,可以显示的话则显示。
    3. 需要标记是否有字符输出。没有的话,输出空行


    第二次刷题:
     1 #include<cstdio>
     2 int main()
     3 {
     4     char tempchar=0,badkeys[128]={0},haveprint=0;//''是c/c++语言中的字符串结束符,在ASCII字符集中对应数字0
     5     
     6     while(scanf("%c",&tempchar) && '
    '!=tempchar)
     7     {
     8             if('A'<=tempchar && tempchar<='Z' ) badkeys[tempchar]=1,tempchar+='a'-'A';//某一个英文字母的大写形式出现,则其大写和小写都无法显示 
     9             badkeys[tempchar]=1;
    10     }
    11     if(badkeys['+'])for(int i='A';i<='Z';i++) badkeys[i]=1;//'+'出现,即上档键损坏,所有大写都无法显示
    12      
    13     while(scanf("%c",&tempchar) && '
    '!=tempchar)
    14             if(!badkeys[tempchar]) printf("%c",tempchar),haveprint=1; 
    15     
    16     if(!haveprint) printf("
    ");         
    17     return 0;
    18 } 
    
    
    
     
    第一次刷题:
     1 #include<stdio.h>
     2 #include<string.h> 
     3 int main()
     4 { 
     5     char badkey[200];
     6     char strtrue[100010];
     7     gets(badkey);gets(strtrue);
     8     
     9     int istr=0,canout=1,num=0,len=strlen(badkey);
    10     while(strtrue[istr])
    11     {
    12         canout=1;
    13         for(int i=0;i<len;i++)
    14         {
    15             if(strtrue[istr]==badkey[i])
    16                 canout=0;
    17             else if('A'<=strtrue[istr] && strtrue[istr]<='Z' && badkey[i]=='+')            
    18                 canout=0;
    19             else if('a'<=strtrue[istr] && strtrue[istr]<='z' && strtrue[istr]-'a'+'A'== badkey[i])            
    20                 canout=0;            
    21         }
    22         if(canout) 
    23         {
    24             printf("%c",strtrue[istr]);
    25             num++;
    26         }
    27         istr++;
    28     }
    29     if(!num) printf("
    ");
    30     return 0;
    31 } 
    
    
    
    
    
  • 相关阅读:
    soapUI学习笔记--用例字段参数化
    python 写数据到txt 文件
    Python生成8位随机字符串的一些方法
    python datetime获取几分钟、小时、天之前的时间
    MQTT 测试工具介绍
    运用MQTT-JMeter插件测试MQTT服务器性能
    mqtt-jmeter
    ActiveMQ测试工具
    MQTT压力测试工具之JMeter插件教程
    volatile非原子性的示例
  • 原文地址:https://www.cnblogs.com/asinlzm/p/4444669.html
Copyright © 2011-2022 走看看