PAT——B1029(hash)

要解决的两个问题:

①如何在英文字母不区分大小写的情况下判断在的一个字符串中有哪些字符没有在第二个字符串中出现

枚举

小写变大写

找不到相等就直接输出

②如何保证同一个字符(不区分大小写)只输出一次,且英文字母均使用大写输出

设置bool HashTable[128]表示字符是否已经输出

则可以判断是否输出

注意:HashTable数组的大小只要能把题目给出的字符包括即可

一般可以直接设置ASCII码的个数128为其数组长度

#include<cstdio>
#include<cstring>
char s1[100],s2[100];
int main()
{
    bool HashTable[128]={false};
    scanf("%s %s",s1,s2);
    //gets(s1);
    //gets(s2);
    int len1=strlen(s1);
    int len2=strlen(s2);
    for(int i=0;i<len1;i++)
    {
         char c1,c2;
         int j;
        for(j=0;j<len2;j++)
        {
            c1=s1[i];
            c2=s2[j];
           if(c1<='z'&&c1>='a')
           {
               c1-=32;
           }
           if(c2<='z'&&c2>='a')
           {
              c2-=32;
           }
           if(c1==c2)
            break;
        }
        if(j==len2&&HashTable[c1]==false)
        {
            printf("%c",c1);
            HashTable[c1]=true;
        }
    }
    return 0;
}

小写字母转化为大写字母用的是-32

所以此题暂且认为bool HashTable[c1]

c1可以存储字符类的

猜你喜欢

转载自blog.csdn.net/qq_42232118/article/details/81627732
今日推荐