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)); } } };