如今回過頭來看這個代碼,因爲最近編譯原理實驗課上寫了詞法分析程序,這兩個仍是有類似的地方的,詞法分析程序我是一層大循環控制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 };