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;  
    • }  
  • 相关阅读:
    verilog编码规范
    verilog代码 想法验证---与寄存器输出有关
    MMCM与PLL
    Vivado约束文件(XDC)的探究(2)
    Vivado约束文件(XDC)的探究(1)
    VGA图像显示组成模块分析
    关于Quad PLL /CPLL参考时钟的选择
    GTX的生成(包括COMMON)
    SD-SDI播出系统---使用GTX TX产生恢复时钟
    DRP端口描述
  • 原文地址:https://www.cnblogs.com/luzhongshan/p/3868376.html
Copyright © 2011-2022 走看看