//递归做的 开始用动态规划做 类似通配符问题 总感觉有问题 答案里面用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; } };
时间: 2024-11-03 21:41:15