面试题31:字符串正则表达式的递归匹配
mplement 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
1 class Solution { 2 public: 3 bool isMatch(const char *s, const char *p) { 4 5 if (*p == '\0') return *s == '\0'; 6 7 if (*(p + 1) == '*') { 8 if (*s == *p || *p == '.') { 9 if (*s == '\0') { 10 return isMatch(s, p + 2); 11 } else { 12 return isMatch(s, p + 2) || isMatch(s + 1, p) || isMatch(s + 1, p + 2); 13 } 14 } else { 15 return isMatch(s, p + 2); 16 } 17 } 18 if (*s == *p || (*p == '.' && *s != '\0')) { 19 return isMatch(s + 1, p + 1); 20 } 21 return false; 22 } 23 };