【Leetcode】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
思路:从部分推整体。
1 class Solution { 2 public: 3 bool isMatch(const char *s, const char *p) { 4 if (*p == '\0') { 5 return *s == '\0'; 6 } 7 if (*s == *p || *p == '.' && *s != '\0') { 8 return *(p + 1) != '*' ? isMatch(s + 1, p+ 1) : 9 isMatch(s, p + 2) || isMatch(s + 1, p); 10 } else { 11 return *(p + 1) == '*' && isMatch(s, p + 2); 12 } 13 } 14 };