//递归做的 开始用动态规划做 类似通配符问题 总感觉有问题 答案里面用dp做的多多少少有点问题
//估计是我水平太低
//只是其中一个带符号!
class Solution
{
public:
bool match(char* str, char* pattern)
{
if(str==NULL||pattern==NULL)
{
return false;
}
return digui(str,pattern);
}
bool digui(char* str,char* pattern)
{
//出口条件
if(*str=='\0'&&*pattern=='\0') return true;
//因为'.'和'*'都是在pattern中 所以以下这种情况必然为FALSE
if(*str!='\0'&&*pattern=='\0') return false;
//如果有星号 看星号前面这个元素是否相等
if(*(pattern+1)=='*')
{
if((*pattern==*str)||(*pattern=='.'&&*str!='\0'))
{
//星号前面的相等了
return (digui(str,pattern+2)||digui(str+1,pattern));
//为什么不是digui(str+1,pattern+1)
//因为字母加星号是有可能对应str中连续多个元素的
}
else
{
//不一样就很简单了
return digui(str,pattern+2);
}
}
if(*str==*pattern||(*pattern='.'&&*str!='\0'))
{
return digui(str+1,pattern+1);
}
return false;
}
};