1029 旧键盘
gets不能用所以改用fets(),fgets会把换行符也存下来所以让得到的数组长度-1
第一次用fgets第二个参数没注意写太小了,检查了15分钟+才检查出来.....这次应该记牢了把
算法笔记上的方法是双重for循环,时间复杂度是len1*len2
改成两次for循环那么复杂度就是max(len1,len2)
第一次遍历第二个数组把第二个数组出现的字符(如果是小写要处理)标记在hash数组上
然后再遍历第一个数组找是否有缺失即可
#include<stdio.h> #include<algorithm> #include<string.h> #include<iostream> using namespace std; int main() { int i,j,n; bool hash[128]={false}; char c1[100],c2[100]; fgets(c1,100,stdin); fgets(c2,100,stdin); int len1=strlen(c1)-1; int len2=strlen(c2)-1; for(j=0;j<len2;j++) { if(c2[j]>='a' && c2[j]<='z') c2[j]=c2[j]-'a'+'A'; if( hash[c2[j]] == false ) hash[c2[j]]=true; } for(i=0;i<len1;i++) { if(c1[i]>='a' && c1[i]<='z') c1[i]=c1[i]-'a'+'A'; if( hash[c1[i]] == false ) { printf("%c",c1[i]); hash[c1[i]] =true; } } return 0; }

浙公网安备 33010602011771号