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
原文:http://www.cnblogs.com/pengyu2003/p/3615654.html