Ten. 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") →falseismatch ( "AA", "AA") →trueismatch ("AAA", "AA") →falseismatch ("AA", "A *") →trueismatch ("AA", ". *") →trueismatch ("AB", ". *") →true IsMatch ("AaB", "C*a*b") →true
Public classSolution { Public BooleanIsMatch (String s, String p) {returnIsMatch (S, 0, p, 0); } Private BooleanIsMatch (String S,intSi, String p,intpi) { if(PI = =p.length ())returnSi = =s.length (); CharPcurrent =P.charat (PI); if(Pi+1<p.length () && p.charat (pi+1) = = ' * ')//if followed by star { if(IsMatch (S, Si, P, pi+2))//Skip the first star part. return true; if(Si<s.length () && (S.charat (si) = = Pcurrent | | pcurrent = = '. ') && IsMatch (S, si+1, P, pi)) return true; return false; } Else //Match single character { if(SI = =s.length ())return false;//if S is already at the end. if(Pcurrent! = S.charat (SI) && pcurrent! = '. ') return false;//cannot find the match in S. returnIsMatch (S, si+1, p, pi+1); } }}
Regular Expression Matching && 44. Wildcard Matching