前面两篇文章,分别介绍了字符串的概念、抽象数据类型、KMP模式匹配算法。这篇文章,我们来学习字符串的一些常用算法。字符串的相关操作算法StrAssign:/*功能:生成一个其值等于Chars的串T*/Status StrAssign(String T, char *chars){ int i...
分类:
其他好文 时间:
2014-08-29 17:53:38
阅读次数:
183
/*
* KMP 模式匹配算法
*/
#include
#include
using namespace std;
/*
* 计算模式串的next数组
* 模式串既做主串,又做模式串,进行匹配
* 时间复杂度为O(m),m为模式串的长度
*/
void countNext(char* strPattern, int len, int* next)
{
int i = 0, j...
分类:
其他好文 时间:
2014-08-25 17:01:04
阅读次数:
214
在一个长串中查找一个子串是较常用的操作。各种信息检索系统,文字处理系统都少不了。本文介绍一个非常著名的KMP模式匹配算法用于子串查找...
分类:
其他好文 时间:
2014-07-16 17:09:49
阅读次数:
177
背景朴素匹配算法太低效了。冗余过多,已经比较过的,没必要重复;可以从比较结果中推导出来的,也没必要再重复。核心主串不回溯,变化要匹配的串的下一次比较的位置。实现两个函数,一个提供next数组,即存储要匹配的串的每一个元素匹配失败后,下一次要比较的位置的数组。另一个实现匹配。java代码public
...
分类:
其他好文 时间:
2014-06-10 11:32:20
阅读次数:
239
ji
克努特-莫里斯-普拉特算法,简称KMP算法。...
分类:
其他好文 时间:
2014-05-01 18:18:07
阅读次数:
327