LeetCode10 Regular Expression Matching

說是動態規劃,實際上是一道回溯暴力搜索。

注意一點就可以了。

*的數量可以是0、1、2、3、4.我們只要遍歷出當*是0的時候,後續的組合是不是符合要求的。這樣我們纔可以滿足1之後的情形

bool isMatch(char* s, char* p) {
     if (s == NULL || p == NULL) return false;
     if (*p == '\0') return *s == '\0';
     // ".*" matches "", so we can't check (*s == '\0') here.
  
     if (*(p + 1) == '*')
     {
         // Here *p != '\0', so this condition equals with
         // (*s != '\0' && (*p == '.' || *s == *p)).
         while ((*s != '\0' && *p == '.') || *s == *p)
         {
             if (isMatch(s, p + 2)) return true;
             ++s;
         }
         
         return isMatch(s, p + 2);
     }
     else if ((*s != '\0' && *p == '.') || *s == *p)
     {
         return isMatch(s + 1, p + 1);
     }
     
     return false;

}


發佈了32 篇原創文章 · 獲贊 5 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章