总结
1. 得到一个教训, 对于模拟题来说, 需要检查为空和越界两种情况
2. look ahead 在自动机类型题目中是非常必要的, 要根据两个字符来判断控制流的走向
代码
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 |
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; }}; |
Leetcode Regular Expression,布布扣,bubuko.com
原文:http://www.cnblogs.com/zhouzhuo/p/3682648.html