题解 | #字符串通配符#
字符串通配符
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;
}