字符串匹配:一个模式p,p是个字符串,长度为m;一个文本T,T的长度为n; 偏移量为s,s的范围为(0,n-m); 我们要做的就是找到所有的s。
其实问题也等价为,找到所有的s,使得p(m)是T(s+m)的后缀。
常用思路:朴素字符串匹配(无预处理阶段,仅有匹配阶段),RK算法(预处理阶段,匹配阶段),自动机算法(预处理阶段,匹配阶段),
KMP算法(预处理阶段,匹配阶段)。
它们的时间复杂度:预处理阶段 +匹配阶段
重要概念:前缀,后缀,后缀重叠定理
有限字符串
朴素字符串匹配算法,比较朴素,就是一点一点挪。没有利用每次挪动失败的信息。浪费了呀啊。
接下来三种,则均有利用到前面失败时的信息,记录下来,辅助指导后面的匹配。