首页 > 其他 > 详细

Implement strStr()

时间:2014-03-23 10:21:21      阅读:293      评论:0      收藏:0      [点我收藏+]

Implement strStr().

Returns a pointer to the first occurrence of needle in haystack, or null if needle is not part of haystack.

 

用KMP

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
49
50
51
class Solution {
public:
    char *strStr(char *haystack, char *needle) {
        int size = 0;
        for(;haystack[size]!=‘\0‘ ;size++);
        int size_needle =0;
        while(needle[size_needle]!=‘\0‘)size_needle++;
        if(size_needle == 0 )return haystack;
         
         
        vector<int> patten(size_needle,0);
         
        generatepatten(needle,size_needle,patten);
         
        int i = 0;
        int ind = 0;
        while( i < size )
        {
            if(haystack[i] == needle[ind] )
            {
                i++;
                ind++;
                if(ind == size_needle )
                return haystack + i - size_needle;
            }
            else
            {
                i = i - ind + patten[ind] +1;
                ind = 0;
            }
        }
        return NULL;
         
    }
    void generatepatten(char * needle , int size , vector<int> & patten)
    {
        int len = 0;
        for(int i = 1 ; i < size ;i++)
        {
            if(needle[i] == needle[len])
            {
                patten[i] = ++len;
            }
            else
            {
                patten[i] = 0;
                len = 0;
            }
        }
    }
};

  

Implement strStr(),布布扣,bubuko.com

Implement strStr()

原文:http://www.cnblogs.com/pengyu2003/p/3615654.html

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