-
KMP
-
-
蛮力 vs KMP
-
KMP – next表的使用
-
KMP – 核心原理(构造next表)
-
-
真前缀后缀的最大公共子串长度
-
构造 next 表
-
-1的精妙之处
-
-
KMP – 主算法代码实现
-
KMP – 为什么是“最大“公共子串长度?
-
KMP – next表的构造思路及实现
-
KMP – next表的不足之处
-
KMP – next表的优化思路及实现
-
KMP – next表的优化效果
-
KMP – 性能分析
-
KMP完整源码
-
-
蛮力 vs KMP
-
Boyer-Moore
-
-
坏字符规则(Bad Character)
-
好后缀规则(Good Suffix)
-
BM算法最好情况与最坏情况
-
-
Karp-Rabin / Rabin-Kary
-
Sunday
数据结构与算法笔记:恋上数据结构笔记目录
===========================================================================
本课程研究的串是开发中非常熟悉的字符串,是由若干个字符组成的有限序列
字符串 thank
的前缀(prefix)、真前缀(proper prefix)、后缀(suffix)、真后缀(proper suffix)
========================================================================
- 查找一个模式串(pattern)在文本串(text)中的位置:
String text = "Hello World";
String pattern = "or";
text.indexOf(pattern); // 7
text.indexOf(pattern); // -1
几个经典的串匹配算法:
-
蛮力(Brute Force)
-
KMP
-
Boyer-Moore
-
Karp-Rabin / Rabin-Karp
-
Sunday
下面用 tlen
代表文本串 text 的长度,plen
代表模式串 pattern 的长度;
==================================================================================
-
以字符为单位,从左到右移动模式串,直到匹配成功 ;
蛮力算法有 2 种常见实现思路: