功能    判断一个字符串是否在另一个字符串里出现过

next 数组求法
        1.初始化nest[1]=j=0,假设next[1~i-1]已经求出,下面求解next[i]
        2.不断尝试扩展匹配长度j,如果扩展失败(下一个字符不相等),
          令j=next[j],直至j为0(从头开始匹配)
        3.如果扩展成功,匹配长度j就增加1。next[i]的值就是j
        next[1]=0;
        for(int i = 2, j = 0; i <= m; i++)
        {        
            while(j && p[i] != p[j + 1])             
            j = ne[j];        
            if(p[i] == p[j + 1])             
                j++;        
            ne[i] = j;
        }

kmp
        for(int i=1,j=0;i<=m;i++)
        {        
            while(j>0&&p[i]!=p[j+1])
                    j=ne[j];
            if(p[i]==[j+1])
                    j++;
            if(j==n)
            {
                    j=ne[j];
                    cout<<i-n<<endl;//i-j为出现的位置的起始下标
            }
        }