首页 > 其他 > 详细

Leetcode Regular Expression

时间:2014-04-23 17:26:36      阅读:572      评论:0      收藏:0      [点我收藏+]

题目

 

总结

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

Leetcode Regular Expression

原文:http://www.cnblogs.com/zhouzhuo/p/3682648.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!