• 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

  • 相关阅读:
    谷歌的教育软件
    一些视频教程网站推荐
    TexturePacker 介绍
    Flash Builder常用快捷键
    flash builder 4 编译器参数
    Flex中神奇的快速辅助 Ctrl+1
    iPhone 真机调试应用程序
    说说Xcode4中xib绑定的原理
    springboot + mybatis + gradle项目构建过程
    Elasticsearch Xpack认证
  • 原文地址:https://www.cnblogs.com/jason31/p/9558481.html
Copyright © 2020-2023  润新知