leetcode Regular Expression Matching

 如今回過頭來看這個代碼,因爲最近編譯原理實驗課上寫了詞法分析程序,這兩個仍是有類似的地方的,詞法分析程序我是一層大循環控制eof(),分類的小循環去找標識符,無符號數,分割符等。其實和這個題的思想差很少。spa

這個題是用遞歸往下推動,中間匹配*號時用while去嘗試,失敗再退回,成功則繼續。code

代碼:blog

 1 class Solution {
 2 public:
 3     bool isMatch(const char *s, const char *p) {
 4         if (*(p) == '\0')
 5         return *(s) == 0;
 6     if (*(p + 1) != '*')
 7     {
 8         if (*(s) == *(p) || *(p) == '.'&&*(s) != '\0')
 9         {
10             return isMatch(s+1, p+1);
11         }
12         else
13             return false;
14     }
15     else
16     {
17         while (*(s) == *(p) || *(p) == '.'&&*(s) != '\0')
18         {
19             if (isMatch(s, p + 2))
20             {
21                 return true;
22             }
23             s++;
24         }
25         return  isMatch(s, p + 2);
26     }
27     }
28 };
相關文章
相關標籤/搜索