题解 | #字符串通配符#

字符串通配符

http://www.nowcoder.com/practice/43072d50a6eb44d2a6c816a283b02036

#include<stdio.h>
#include<string.h>
#include<ctype.h>

int match(char *str1, char *str2)
{
    if(str1[0]=='\0' && str2[0]=='\0')
        return 1;
    else if(str1[0]=='\0' || str2[0]=='\0')
        return 0;
    if(str1[0]=='?' || str1[0]==str2[0])
        return match(str1+1, str2+1);
    if(str1[0]=='*')
    {
        if(*(str1+1)=='*')
            return (match(str1+2, str2) || match(str1+2, str2+1) || match(str1+1, str2+1));
        else
            return (match(str1+1, str2) || match(str1+1, str2+1) || match(str1, str2+1));
    }
    return 0;
}

int main()
{
    char str1[101], str2[101];
    scanf("%s %s", str1, str2);
    int flag = 1;
    for(int i=0; i<strlen(str1); i++)
    {
        if(str1[i]>='A' && str1[i]<='Z')
            str1[i] += 32;
    }
    for(int i=0; i<strlen(str2); i++)
    {
        if(str2[i]>='A' && str2[i]<='Z')
            str2[i] += 32;
        if(isalpha(str2[i])==0 && isdigit(str2[i])==0 && str2[i]!='.')
            flag = 0;
    }
    if(flag && match(str1, str2))
        printf("true\n");
    else
        printf("false\n");
    return 0;
}
全部评论

相关推荐

1 2 评论
分享
牛客网
牛客企业服务