zoukankan      html  css  js  c++  java
  • KMP字符串模式匹配

    1.描述:指针i不回溯的字符串模式匹配算法

    #include <iostream>
    #include<cstring>
    using namespace std;
    
    /**
    名称:计算next数组函数
    描述:用于计算KMP模式匹配算法的next数组。该方法已得到修正,可以避免连续相同元素的问题
    编写人:李一帆
    时间:2021.2.3
    参数:patternString 模式串
    参数:nextArray next数组
    返回值:null
    **/
    void getNextArray(char* patternString,int* nextArray){
        int i=0;
        int j=-1;
        nextArray[0]=-1;
        while(i<strlen(patternString)){
            if(j==-1||patternString[i]==patternString[j]){
                i++;
                j++;
                if(patternString[i]!=patternString[j]) nextArray[i]=j;
                else nextArray[i] = nextArray[j];
            }else{
                j= nextArray[j];
            }
        }
    }
    
    /**
    名称:KMP模式匹配
    描述:用于字符串的模式匹配问题
    编写人:李一帆
    时间:2021.2.3
    参数:mainString 主串
    参数:patternString 模式串
    参数:nextArray next数组
    返回值:int -1:不匹配;其余:子模式的首下标
    **/
    int patternMathcingKMP(char* mainString,char* patternString,int* nextArray){
        int i = 0;
        int j = 0;
        while(i<strlen(mainString)&&j<strlen(patternString)){
            if(j==-1||mainString[i]==patternString[j]){
                i++;j++;
            }else{
                j = nextArray[j];
            }
        }
        if(j==strlen(patternString)){
            return i - j;
        }else{
            return -1;
        }
    }
    
    int main()
    {
        char* mainString = "ababcabcacbab";
        char* patternString = "abcac";
        int* nextArray =new int[100];
        getNextArray(patternString,nextArray);
        int pos = patternMathcingKMP(mainString,patternString,nextArray);
        cout<<pos;
        return 0;
    }
  • 相关阅读:
    Kafka: Producer (0.10.0.0)
    Kafka:架构简介【转】
    ZooKeeper示例 分布式锁
    机器学习---人脸对齐的基于形状模型的训练
    人脸妆容迁移---研究和思考
    机器学习----人脸对齐的算法-ASM.AAM..CLM.SDM
    基于opencv+Dlib的面部合成(Face Morph)
    c语言编程-----指向二维数组的指针
    工具软件 PYUV打开raw图片
    eclipse 使用问题
  • 原文地址:https://www.cnblogs.com/fangexuxiehuihuang/p/14368036.html
Copyright © 2011-2022 走看看