题解 | #字符串通配符#
字符串通配符
http://www.nowcoder.com/practice/43072d50a6eb44d2a6c816a283b02036
#include<iostream>
using namespace std;
bool isMatch(const char*s,const char*p)
{
if(*s=='\0'&&*p=='\0')
{
return true;
}
if(*s=='\0'||*p=='\0')
{
return false;
}
if(*p=='?')
{
if(!isdigit(*p)&&!isalpha(*s))
{
return false;
}
return isMatch(s+1, p+1);
}
else if(*p=='*')
{
while(*p!='\0'&&*p=='*')p++;
p--;
return isMatch(s,p+1)||isMatch(s+1,p+1)||isMatch(s+1,p);
}
else if(tolower(*p)==tolower(*s))
{
return isMatch(s+1,p+1);
}
return false;
}
int main()
{
string p,s;
while(cin>>p>>s)
{
bool res=isMatch(s.c_str(),p.c_str());
if(res)
{
cout<<"true"<<endl;
}
else
{
cout<<"false"<<endl;
}
}
return 0;
}