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

    • #include <iostream>   
    • #include <cstdlib>   
    • #include <cstdio>   
    • using namespace std;  
    •   
    • //这是整个kmp中最核心的地方   
    • int get_next(const char*t, int *next)  
    • {  
    •     int i = 0;  
    •     int j = -1; //设置j = -1,非常巧妙   
    •     int len = strlen(t);  
    •     memset(next,0, sizeof(int) * len);  
    •     next[0] = -1;  
    •     while(i < len - 1)  
    •     {  
    •         if(j == -1 || t[i] == t[j]) //前面的判断,j == -1, 非常巧妙   
    •         {  
    •             i++;  
    •             j++;  
    •             next[i] = j;    //将后面的next数组元素赋值   
    •         }  
    •         else  
    •             j = next[j];  
    •     }  
    • }  
    •   
    • int kmp(const char *s, const char *t)  
    • {  
    •     int i = 0;  
    •     int j = 0;  
    •     int next[100];  
    •     get_next(t,next);  
    •     while(i < strlen(s) && j < strlen(t))  
    •     {  
    •         if(j == - 1 || s[i] == t[j])    //如果j为-1,或者模式串和主串相等,两者继续往下比较   
    •         {  
    •             i++;  
    •             j++;  
    •         }  
    •         else  
    •             j = next[j];  
    •     }  
    •   
    •     if(j >= (int)strlen(t))  
    •     {  
    •         cout << "found " << endl;  
    •         return 0;  
    •     }  
    •   
    •     cout << "not found" <<endl;  
    •     return 0;  
    • }  
  • 相关阅读:
    谷歌浏览器调试
    建立标准编码规则(五)-工程结构
    Ruby页面,循环赋值方法(类似java EL表达式赋值)
    ruby--Hash方法汇总
    ant design环境搭建过程中遇到的问题--Windows-dva-cli
    Linux下Nodejs安装(完整详细)
    linux chmod命令使用
    EL表达式获取日期时间类型后格式化的问题
    百度网盘视频资源
    Eclipse插件:mybatis generator的使用步骤
  • 原文地址:https://www.cnblogs.com/luzhongshan/p/3868376.html
Copyright © 2011-2022 走看看