PAT B1033 旧键盘打字 (20分) 一.问题描述 二.解题思路及注意事项 1.用hash表判断各个字符是否可以正常输出,bool数组初始化为false较为保险 2.注意第一行可能输入为空行,所有输入时使用getline() 3.第一行的英文字母为大写,相应的小写字母也应设置为不能输出 4.判断输出时,如果读入字符为大写英文字母,应先判断上档键是否可以打出
三.具体代码
#include<iostream> #include<string.h> using namespace std; int main() { char str1[100000], str2[100000]; cin.getline(str1,sizeof(str1)); int l1=strlen(str1); bool hash[256]={false}; for(int i=0;i<l1;i++) { if(str1[i]>='A'&&str1[i]<='Z') { hash[str1[i]+32]=true; } hash[str1[i]]=true; } char c1='+';int flag=0; if(hash[c1]==true) { flag=1; } cin>>str2; int l2=strlen(str2); for(int j=0;j<l2;j++) { if(flag==1&&str2[j]<='Z'&&str2[j]>='A') { continue; } if(hash[str2[j]]==false) { cout<<str2[j]; } } cout<<endl; }