这道题主要考察的是对各种情况的判断
时间和内存消耗以及源代码如下:
bool isMatchCore(char* s, char* p){
if (*p == *s)
{
if (*p == '\0')
{
return true;
}
else
{
return isMatchCore(s+1, p+1);
}
}
if (*p == '.' && *s != '\0')
{
return isMatchCore(s+1, p+1);
}
if (*p == '*')
{
return isMatchCore(s, p-1)
|| isMatchCore(s, p+1)
|| isMatchCore(s-1, p+1);
}
//没有这几句的话下一个判断会超出内存
if (*p == '\0')
{
return false;
}
if (*(p+1) == '*')
{
return isMatchCore(s, p+2);
}
return false;
}
bool isMatch(char* s, char* p){
if (s == NULL || p == NULL)
{
return false;
}
return isMatchCore(s, p);
}