1、概要

2、字符串

2.1 Rabin-Karp算法

关键思想是对于位置i,高效计算文本中i+1位置的子字符串散列值。文本txt中起始于位置i的含有M个字符的子字符串所对应的数为:

假设已知,则i+1位置开始,长度为M的子字符串所对应的数为:

在基于蒙特卡洛法,针对Q选取较大的质数。散列值一样时,就认为是字符串匹配。

而基于拉斯维加斯算法时,在散列值一样时,还需要比较字符串是否一致。

https://github.com/wuli2496/material/blob/master/%E7%AE%97%E6%B3%95%E7%AC%AC4%E7%89%88/%E7%AC%AC5%E7%AB%A0/RabinKarp.java

2.2 KMP算法

关键是构造dfa。dfa(c,j)表示模式的第j个位置的字符与字符c比较时,继续下一个字符匹配的位置。如果模式第j个位置的字符等于c,则下一个字符匹配的位置就是j+1。对于第个j

  • 匹配失败时,将 dfa[][x]复制到dfa[][j]
  • 匹配成功将dfa[pat.charAt(j)][j] =j+1
  • 更新x

ABABAC的状态转换图为

https://github.com/wuli2496/material/blob/master/%E7%AE%97%E6%B3%95%E7%AC%AC4%E7%89%88/%E7%AC%AC5%E7%AB%A0/KMP.java

参考资料:

https://algs4.cs.princeton.edu/home/

https://algs4.cs.princeton.edu/code/

https://github.com/kevin-wayne/algs4

算法(第4版)学习笔记相关推荐

  1. 36篇博文带你学完opencv :python+opencv进阶版学习笔记目录

    基础版学习笔记传送门 36篇博文带你学完opencv :python3+opencv学习笔记汇总目录(基础版) 进阶版笔记 项目 opencv进阶学习笔记1: 调用摄像头用法大全(打开摄像头,打开摄像 ...

  2. 《Real-Time Rendering》第四版学习笔记——Chapter 9 Physically Based Shading(一)

    一.光的物理特性 光与物体的交互形成了基于物理着色的基础. 在物理层面上,光的模型为电磁横波.每个波都有一个单一的波长λ\lambdaλ.具有单一波长的光叫单色光(monochromatic ligh ...

  3. MySQL技术内幕-InnoDB存储引擎第2版-学习笔记-01

    MySQL技术内幕-InnoDB存储引擎第2版-学习笔记-01 1. MySQL体系结构和存储引擎 1.1 定义数据库和实例 数据库database: 物理操作系统文件或其他形式文件类型的集合. 当使 ...

  4. MySQL技术内幕-InnoDB存储引擎第2版-学习笔记-02

    MySQL技术内幕-InnoDB存储引擎第2版-学习笔记-02 6. 锁 ​ 人们认为行级锁总会增加开销.实际上,只有当实现本身会增加开销时,行级锁才会增加开销.InnoDB 存储引擎不需要锁升级,因 ...

  5. 机器学习实战(Machine Learning in Action)学习笔记————06.k-均值聚类算法(kMeans)学习笔记...

    机器学习实战(Machine Learning in Action)学习笔记----06.k-均值聚类算法(kMeans)学习笔记 关键字:k-均值.kMeans.聚类.非监督学习 作者:米仓山下 时 ...

  6. C++Primer第5版学习笔记(三)

    C++Primer第5版学习笔记(三) 第四/五章的重难点内容 你可以点击这里回顾第三章内容       因为第五章的内容比较少,因此和第四章的笔记内容合并.       第四章是和表达式有关的知识, ...

  7. C++Primer第5版学习笔记(一)

    C++Primer第5版学习笔记(一) 第一.二章的重难点内容        这个笔记本主要记录了我在学习C++Primer(第5版,中文版)的过程中遇到的重难点及其分析.因为第一.二章都比较简单,因 ...

  8. 《Python编程:从入门到实战》(第2版)学习笔记 第5章 if语句

    [写在前面]为进一步提高自己的python代码能力,打算把几本经典书籍重新过一遍,形成系统的知识体系,同时适当记录一些学习笔记,我尽量及时更新!先从经典的<Python编程:从入门到实战> ...

  9. PMBOK(第六版) 学习笔记 ——《第七章 项目成本管理》

    系列文章目录 PMBOK(第六版) 学习笔记 --<第一章 引论> PMBOK(第六版) 学习笔记 --<第二章 项目运行环境> PMBOK(第六版) 学习笔记 --<第 ...

最新文章

  1. linux下apk包名查看,使用adb命令查看apk版本
  2. Vue实现仿音乐播放器12-实现歌手页面效果
  3. 什么是latex科技排版系统,有对比word有何不同?
  4. 个人作业——软件产品分析
  5. github中的watch、star、fork的作用
  6. 为什么有些人从不点开朋友圈?
  7. 7年老Android一次操蛋的面试经历,讲的太透彻了
  8. BiSeNet V2论文及源码
  9. 【Next Permutation】cpp
  10. 十荟团创始人发表内部信,公布下半场业务的全面升级规划
  11. Mac下Alt键配置
  12. 简易md5验证python包md5hash
  13. Android中ButterKnife(黄油刀)的详细使用
  14. 易语言c语言哪个做游戏脚本,易语言游戏脚本写法源码
  15. 思林杰科创板上市破发:大跌近24% 应收账款近2亿
  16. 前端JavaScript初步了解仅了解 初步资料 不涉及使用 及软件制作方式
  17. 我对知乎前端相关问题的十问十答
  18. 继绘画之后,AI又开始写剧本了
  19. Linux虚拟内存和缺页中断
  20. css文字特效-冰冻文字(带炫光)

热门文章

  1. 理解First Chance和Second Chance避免单步调试
  2. python对象编程例子-python(十二)面向对象编程、类
  3. python代码写完怎么运行-Python 项目代码写完了,然后怎么打包和发布?
  4. python 代码-python经典代码
  5. python可以干嘛用-Python可以被用来做哪些神奇好玩的事情
  6. python编程零基础-编程零基础应当如何开始学习 Python?
  7. 用python的turtle画炫酷的图-使用Python的turtle画炫酷图形
  8. 在当当买了python怎么下载源代码-python爬虫爬取当当网
  9. python简单入门代码-Python入门 | IDLE的介绍和使用方法
  10. python文字教程-Python在图片中添加文字的两种方法