题目大意:“.”可以代表任意一个字符,“*”可以代表0个或者多个任意字符,问两个字符串是否相匹配
Code:
bool isMatch(const char *s, const char *p)
{
if (*p == '\0') return *s == '\0';
if (*(p + 1) != '*')
{
if (*p == *s || (*p == '.' && *s != '\0'))
return isMatch(s + 1, p + 1);
else
return false;
}
else
{
while (*p == *s || (*p == '.' && *s != '\0'))
{
if (isMatch(s, p + 2)) //是*之后要将*代表0个任意字符开始匹配
return true;
s++;
}
return isMatch(s, p+ 2);
}
}