思路:此题中".“可表示任意字符,”*“前面的字符可出现0次、1次或者多次。需要注意的就是”*",需要考虑多种情况。
class Solution {
public:
bool match(char* str, char* pattern)
{
if(str==nullptr&&pattern==nullptr)
return false;
if(*str=='\0'&&*pattern=='\0')
return true;
if(*str!='\0'&&*pattern=='\0')
return false;
//模式串第二个字符是*号
if(*(pattern+1)=='*')
{
if(*str==*pattern||(*pattern=='.'&&*str!='\0'))
{
return match(str+1,pattern)||match(str+1,pattern+2)||match(str,pattern+2);
//1.*前面的字符使用多次 2.*前面的字符只使用一次 3.*前面的字符未使用
}
else
return match(str,pattern+2);
}
//模式串第二个字符串非*号
if(*str==*pattern||(*pattern=='.'&&*str!='\0'))
return match(str+1,pattern+1);
else
return false;
}
};