Matches any single character.'*' Matches zero or more of the preceding element.The matching should cover the
entire input string (not partial).The function prototype should be:bool isMatch(const char *s, const char *p)Some examples:isMatch("aa","a") → falseisMatch("aa","aa") → trueisMatch("aaa","aa") → falseisMatch("aa", "a*") → trueisMatch("aa", ".*") → trueisMatch("ab", ".*") → trueisMatch("aab", "c*a*b") → truea*:匹配0个或多个a;首先判断某字符后是否是“*”,若不是“*”,则直接判断字符是否相等;若是“*”,则循环递归判断是否相等;
</pre><pre name="code" class="cpp">class Solution {
public:
bool isMatch1(string s,string p,int i,int j)
{
int s_len = s.length();
int p_len = p.length();
int k = 0;
if(i == s_len && j == p_len)
return true;
if(j > p_len || i> s_len)
return false;
if(p[j+1] != '*' && j+1 < p_len || j+1 == p_len)
{
if(s[i] == p[j] && i<s_len || p[j] == '.' && i<s_len)
return isMatch1(s,p,i+1,j+1);
else
return false;
}
else
{
while(s[i] == p[j] && i<s_len || p[j] == '.' && i<s_len)
{
if(isMatch1(s,p,i,j+2))
{
return true;
}
i++;
}
return isMatch1(s,p,i,j+2);
}
}
bool isMatch(string s, string p) {
return isMatch1(s,p,0,0);
}
};