Regular Expression Matching


Implement regular expression matching with support for ​​'.'​​ and ​​'*'​​.

'.' 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") → false
isMatch("aa","aa") → true
isMatch("aaa","aa") → false
isMatch("aa", "a*") → true
isMatch("aa", ".*") → true
isMatch("ab", ".*") → true
isMatch("aab", "c*a*b") → true



class Solution {
public:

//* 匹配0或多个 前面的字符
// "a", "ab*"
bool isMatch(string s, string p) {

int pLen=p.length();
int sLen=s.length();

if(pLen==0)
return sLen==0;

if(pLen==1)
if( (s[0]==p[0] || p[0]=='.') && sLen==1)
return true;
else
return false;

if(p[1]!='*'){
if(s.length()>0 && (s[0]==p[0] || p[0]=='.'))
return isMatch(s.substr(1),p.substr(1));
else
return false;
}else{
while(s.length()>0 && (p[0]==s[0] || p[0]=='.'))
{
if(isMatch(s,p.substr(2)))//*表示0个字符
return true;
s=s.substr(1);
}
return isMatch(s,p.substr(2));
}
}
};