题目描述
分析:
把所有字符转换成大写,完后找在第一个字符中有第二个没有的字符输出,由于只需要输出一次,所以用一个数组记录是否已经输出过。
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int main(){
char s1[100],s2[100];
bool HashTable[128]={false};
cin.getline(s1,100);
cin.getline(s2,100);
int len1=strlen(s1);
int len2=strlen(s2);
for(int i=0;i<len1;i++){
int j;
for(j=0;j<len2;j++){
if(toupper(s1[i])==toupper(s2[j]))
break;
}
if(j==len2&&HashTable[toupper(s1[i])]==false){
printf("%c",toupper(s1[i]));
HashTable[toupper(s1[i])]=true;
}
}
}
PAT 乙级1033和此题类似,也是利用一个数组存储是否该键位有效
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
bool HashTable[256];
char str[100005];
int main(){
memset(HashTable,true,sizeof(HashTable));
cin.getline(str,256);
int len=strlen(str);
for(int i=0;i<len;i++){
HashTable[tolower(str[i])]=false;
}
cin.getline(str,100000);
len=strlen(str);
for(int i=0;i<len;i++){
if(str[i]>='A'&&str[i]<='Z'){
if(HashTable[tolower(str[i])]&&HashTable['+']){
printf("%c",str[i]);
}
}
else if(HashTable[str[i]]){
printf("%c",str[i]);
}
}
}