首页 > 代码库 > 【Leetcode】Regular Expression Matching

【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") → falseisMatch("aa","aa") → trueisMatch("aaa","aa") → falseisMatch("aa", "a*") → trueisMatch("aa", ".*") → trueisMatch("ab", ".*") → trueisMatch("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 };

 

【Leetcode】Regular Expression Matching