这题改了很多次写了很多种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 };