总结
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