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. 需要标记是否有字符输出。没有的话,输出空行 第二次刷题:
 #include<cstdio>
int main()
{
char tempchar=,badkeys[]={},haveprint=;//'\0'是c/c++语言中的字符串结束符,在ASCII字符集中对应数字0 while(scanf("%c",&tempchar) && '\n'!=tempchar)
{
if('A'<=tempchar && tempchar<='Z' ) badkeys[tempchar]=,tempchar+='a'-'A';//某一个英文字母的大写形式出现,则其大写和小写都无法显示
badkeys[tempchar]=;
}
if(badkeys['+'])for(int i='A';i<='Z';i++) badkeys[i]=;//'+'出现,即上档键损坏,所有大写都无法显示 while(scanf("%c",&tempchar) && '\n'!=tempchar)
if(!badkeys[tempchar]) printf("%c",tempchar),haveprint=; if(!haveprint) printf("\n");
return ;
}

 
第一次刷题:
 #include<stdio.h>
#include<string.h>
int main()
{
char badkey[];
char strtrue[];
gets(badkey);gets(strtrue); int istr=,canout=,num=,len=strlen(badkey);
while(strtrue[istr])
{
canout=;
for(int i=;i<len;i++)
{
if(strtrue[istr]==badkey[i])
canout=;
else if('A'<=strtrue[istr] && strtrue[istr]<='Z' && badkey[i]=='+')
canout=;
else if('a'<=strtrue[istr] && strtrue[istr]<='z' && strtrue[istr]-'a'+'A'== badkey[i])
canout=;
}
if(canout)
{
printf("%c",strtrue[istr]);
num++;
}
istr++;
}
if(!num) printf("\n");
return ;
}

												

PAT (Basic Level) Practise (中文)-1033. 旧键盘打字(20)的更多相关文章

  1. PAT (Basic Level) Practise:1033. 旧键盘打字

    [题目链接] 旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及坏掉的那些键,打出的结果文字会是怎样? 输入格式: 输入在2行中分别给出坏掉的那些键.以 ...

  2. PAT (Basic Level) Practise:1029. 旧键盘

    [题目链接] 旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及实际被输入的文字,请你列出肯定坏掉的那些键. 输入格式: 输入在2行中分别给出应该输入的 ...

  3. PAT乙级 1033. 旧键盘打字(20)

    1033. 旧键盘打字(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 旧键盘上坏了几个键,于是在敲一段文 ...

  4. PAT 1033 旧键盘打字(20)(20 分)

    1033 旧键盘打字(20)(20 分) 旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及坏掉的那些键,打出的结果文字会是怎样? 输入格式: 输入在2 ...

  5. PAT-乙级-1033. 旧键盘打字(20)

    1033. 旧键盘打字(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 旧键盘上坏了几个键,于是在敲一段文 ...

  6. PAT (Basic Level) Practice (中文)1033 旧键盘打字 (20 分)

    旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及坏掉的那些键,打出的结果文字会是怎样? 输入格式: 输入在 2 行中分别给出坏掉的那些键.以及应该输入 ...

  7. PAT Basic 1033 旧键盘打字 (20 分)

    旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及坏掉的那些键,打出的结果文字会是怎样? 输入格式: 输入在 2 行中分别给出坏掉的那些键.以及应该输入 ...

  8. PAT 1033. 旧键盘打字(20)

    旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及坏掉的那些键,打出的结果文字会是怎样? 输入格式: 输入在2行中分别给出坏掉的那些键.以及应该输入的文 ...

  9. 1033 旧键盘打字 (20 分)C语言

    题目描述 旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及坏掉的那些键,打出的结果文字会是怎样? 输入描述: 输入在2行中分别给出坏掉的那些键.以及应 ...

随机推荐

  1. 如何在html中引入jsx文件

    不使用webpack工具做react项目 1.引入react相关js文件 <script src="https://cdn.staticfile.org/react/16.4.0/um ...

  2. jzoj5983. 【北大2019冬令营模拟2019.1.1】多边形 (组合数学)

    这其实是道打表题--你看我代码就知道了-- 咳咳来点严谨证明好了-- 前方高能请注意 首先,正多边形近似于圆,可以看做在圆里内接多边形.圆内接多边形最多只有三个锐角.因为凸多边形的外角和为\(360\ ...

  3. QuantLib 金融计算——基本组件之 ExchangeRateManager 类

    目录 QuantLib 金融计算--基本组件之 ExchangeRateManager 类 概述 Money 类中的汇率转换配置 ExchangeRateManager 函数 如果未做特别说明,文中的 ...

  4. js中 call() ,apply(),bing()方法三者的用法和区别

    面试中经常会被问到的,或者做笔试题的时候也会有这样的问题,所以今天专门对这个问题做个总结: 先看个例子: var age = '19' var myObj = { name:'小赖', myAge:t ...

  5. 五粮液【线段树】By cellur925

    题目传送门 考场上感觉的确是线段树,还要维护区间最值...最值怎么维护?还要区间修改?\(update\)的时候加一下就好了吧...之后怎么搞啊?\(qwqwq\)之后好像不太会了...果断删除几乎快 ...

  6. PHP保留小数的相关方法

    结合一下网上的例子 $num = 10.4567; //第一种:利用round()对浮点数进行四舍五入 但是这个如果没有两位小数也不会"两位精度" echo round($num, ...

  7. Windows 2008 R2 如何安装.net framework 3.5

    服务器中安装sql server2012 ,  安装过程中提示没有此 “ Framework 3.5.1 功能 ” , 是不是很尴尬 于是简单记录安装 Framework 3.5.1 功能的步骤 一. ...

  8. JQuery Easyui/TopJUI 多表头创建

    JQuery Easyui/TopJUI 多表头创建 废话不多说,直接贴上代码. html <div data-toggle="topjui-layout" data-opt ...

  9. Java - Class版本号和UnsupportedClassVersionError

    问题分析 Java是向下兼容的,每一个jdk版本都有对应的class版本号(major + minor version numbers):如果用低版本的jvm去加载高版本jdk编译的类,就会报错:ja ...

  10. DRF教程6-分页

    rest框架提供自定义分页样式,让你修改再每个页面上显示多少条数据, pagination API 可以: 分页链接作为响应内容的一部分 分页链接包含在响应头里,比如Content-Range or  ...