hiho Week 3 register

Ended

Participants:669

Verdict:Accepted
Submitted:2014-07-20 01:22:43

Lang:G++

Edit
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
#include <iostream>
#include <string>
using namespace std;
int *getNext(string pattern){
    int size = pattern.length();
    int *next = new int[size];
    next[0] = 0;
    int j = 0;//next
    for(int i = 1;i<size;i++){
        while(j>=1&&pattern[j]!=pattern[i]){//
            j = next[j-1];
        }
        if(pattern[j]==pattern[i]){
            j++;
            next[i] = j;
        }else//
            next[i] = 0;
    }
    return next;
}
/************************************************************************/
/*                                                                      */
/************************************************************************/
int matchNum(string s, string pattern){
    int result = 0;
    int *next = getNext(pattern);
    int p = 0;//p
    for(int i = 0;i<s.length();i++){
        while(p>0 && s[i]!=pattern[p]){//p==pattern.length()
            p = next[p-1];
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX