LeetCode: Regular Expression Matching

这题改了很多次写了很多种case的代码,虽然通过了,但是感觉自己写得太繁琐了,网上找到一个非常简单的代码。这道题的if语句应该着重在*(p+1),我自己写的着重在*p了,这样就弄得很麻烦,而且最后运行时间也长。

 1 class Solution {

 2 public:

 3     bool isMatch(const char *s, const char *p) {

 4         if (*p == '\0') return *s == '\0';

 5         if (*(p+1) != '*') return *s == *p || *p == '.' && *s != '\0'? isMatch(s+1, p+1) : false;

 6         else {

 7             while (*p == *s || *p == '.' && *s != '\0') {

 8                 if (isMatch(s, p+2)) return true;

 9                 s++;

10             }

11             return isMatch(s, p+2);

12         }

13     }

14 };

 

你可能感兴趣的:(LeetCode: Regular Expression Matching)