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

    
    

 

posted @ 2021-02-23 11:54  橘某  阅读(61)  评论(0)    收藏  举报