题解 | #字符串通配符#

字符串通配符

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

#include <stdio.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+1+1, str2)||match(str1+1+1, 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[1000],str2[1000];
    int loc,len1,len2,i,j;
    while(scanf("%s",str1)!=-1){
        scanf("%s",str2);
        len1=strlen(str1);
        len2=strlen(str2);
        int flag=1;
        for(i=0;i<len1;i++){
            if((str1[i]>='A')&&(str1[i]<='Z'))
                str1[i]+=32;
        }
        for(i=0;i<len2;i++){
            if((str2[i]>='A')&&(str2[i]<='Z'))
                str2[i]+=32;
      
            if(((str2[i]<'a')||(str2[i]>'z'))&&(str2[i]!='.')&&((str2[i]<'0')||(str2[i]>'9'))){
                flag=0;
            }
        }
        

        if((flag)&&(match(str1,str2))) printf("true\n");
        else printf("false\n");
    }
    
    return 0;
}
全部评论

相关推荐

八极星:有什么不能问的,(/_\),这又不是多珍贵的机会,你有什么可失去的
点赞 评论 收藏
分享
11-04 19:05
已编辑
东莞城市学院 单片机
不知道怎么取名字_:你这个要实习两年?哪有这么久的,感觉就是即使你毕业了,但还按实习的话,是不是不用给你缴社保公积金啥的
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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