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;
}