题解 | #字符串字符匹配#

字符串字符匹配

https://www.nowcoder.com/practice/22fdeb9610ef426f9505e3ab60164c93

//简单利用哈希的思想,代码上可以简化
#include <stdio.h>
#include<string.h>
int main()
{
    int arr1[26]={0},i=0;
    char S[200],T[200];
    gets(S);
    gets(T);
    int sz=strlen(S);
  //巧妙利用一个整型数组的下标,小写字母-97对应下标的数组值置为1
    for(i=0;i<sz;i++)
    {
        if(arr1[S[i]-97]==0)
        {
            arr1[S[i]-97]=1;
        }
    }
    sz=strlen(T);
  //遍历T字符串,同理,小写字母-97对应下标的数组值置为2(也可以置回0)
    for(i=0;i<sz;i++)
    {
        if(arr1[T[i]-97]!=2)
        {
            arr1[T[i]-97]=2;
        }
    }
  //检查一遍数组,如果还有1剩余,说明T中不完全包含S的字母
    for(i=0;i<26;i++)
    {
        if(arr1[i]==1)
        {
            printf("false\n");
            return 0;
        }
    }
  //遍历结束,如果继续执行说明全包含
    printf("true\n");
    return 0;
}

全部评论

相关推荐

评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务