zoukankan      html  css  js  c++  java
  • kmp算法

     1 /*                 核心代码      */
     2 
     3 
     4 
     5 #include<iostream>
     6 #include<string>
     7 
     8 using namespace std;
     9 const int N=100005;
    10 
    11 void getNext(string p,int *next)
    12 {
    13     int j,k;
    14     next[0]=-1;
    15     j=0;
    16     k=-1;
    17     while(j<p.length()-1)
    18     {
    19         if(k==-1||p[j]==p[k])    //匹配的情况下,p[j]==p[k]
    20         {
    21             j++;
    22             k++;
    23             next[j]=k;
    24         }
    25         else                   //p[j]!=p[k]
    26             k=next[k];
    27     }
    28 }
    29 
    30 
    31 int KMPMatch(string s,string p)
    32 
    33 
    34 {
    35     int next[100];
    36     int i,j;
    37     i=0;
    38     j=0;
    39     getNext(p,next);
    40     while(i<s.length())
    41     {
    42         if(j==-1||s[i]==p[j])
    43         {
    44             i++;
    45             j++;
    46         }
    47         else
    48         {
    49             j=next[j];       //消除了指针i的回溯
    50         }
    51         if(j==p.length())
    52             return i-p.length();
    53     }
    54     return -1;
    55 }
  • 相关阅读:
    css3 动画+动画库
    垃圾回收 及 内存泄漏
    做菜体会
    微信小程序
    微信公众号2
    JavaScript 原生事件
    Bootstrap框架
    Less 和 Sass
    HTML标签总结
    表单元素
  • 原文地址:https://www.cnblogs.com/ws5167/p/3872375.html
Copyright © 2011-2022 走看看