zoukankan      html  css  js  c++  java
  • kmp 模式匹配算法学习笔记

    模式匹配算法,就是给出两个字符串,找出长串中首次出现完全与短串相同字符串的位置。这里将长称成为主串,设为S,短串称模式串,设为T。

    一般的模式匹配可以直接用暴力破解,将S串与T串一位位地进行匹配,一旦出现不匹配的情况,就将S串回溯到原始出发点的下一位,将T串回溯到起点。暴力破解的问题在于,遇到子串中有重复字符前后缀的时候,会出现不必要的回溯。此时就可用kmp算法提高效率。

    kmp算法的匹配算法和暴力破解差别不很大,但是这里不对S串进行回溯,只对T串进行回溯。而next数组的作用就是指导在匹配失败时,T串应该回溯到什么位置。

    next数组的长度和T串相同,这里的下标从1开始,它的计算规则是:next[1] = 0; next[i] 的值,由T[1]~T[i-1]位置的字符串决定,值为这一段字符串中的前缀和后缀相同的位数加1;在没有相同的前缀后缀时,置1。

    示例:“ababaaaba” 011234223、“abcabx” 011123 、“aaaaab” 012345

  • 相关阅读:
    在线漏洞检测网站
    渗透测试工具库
    端口利用解析
    Linux安全脚本
    Linux常见系统故障
    Oracle
    Redis和MongoDB区别
    MHA在监控和故障转移时都做了什么
    Oracle 11g Dataguard参数详解
    Oracle
  • 原文地址:https://www.cnblogs.com/jason31/p/9558481.html
Copyright © 2011-2022 走看看