題目express
總結code
1. 獲得一個教訓, 對於模擬題來講, 須要檢查爲空和越界兩種狀況blog
2. look ahead 在自動機類型題目中是很是必要的, 要根據兩個字符來判斷控制流的走向leetcode
代碼get
class Solution { public: bool isMatch(const char *s, const char *p) { int len1 = strlen(s); int len2 = strlen(p); if(len1 == 0 && len2 == 0) return true; //if(len1 == 0 && len2 != 0) return false; if(len1 != 0 && len2 == 0) return false; bool star = false; if(len2 >= 2 && *(p+1) == '*') star = true; if(!star) { // no star if(len1 == 0) return false; if(p[0] == '.' || p[0] == s[0]) { return isMatch(s+1, p+1); } return false; } // have star if(p[0] == '.') { for(int k = 0; k <= len1; k ++) { if(isMatch(s+k, p+2)) return true; } } else { if(isMatch(s, p+2)) return true; for(int k = 1; k <= len1 && s[k-1] == p[0]; k ++) { if(isMatch(s+k, p+2)) return true; } } return false; } };