题解 | #字符串通配符#

字符串通配符

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-26 22:34
已编辑
重庆邮电大学 Java
快手 客户端开发 (n+5)k*16 公积金12
牛客895077908号:佬 什么双非硕啊
点赞 评论 收藏
分享
面试摇了我吧:啊哈哈面试提前五个小时发,点击不能参加就是放弃
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务