这两天又看了一遍《算法导论》上面的字符串匹配那一节,下面是实现的几个程序,可能有错误,仅供参考和交流。关于详细的讲解,网上有很多,大多数算法及数据结构书中都应该有涉及,由于时间限制,在这就不重复了。需要说明的是: stra:主串,及需要从中寻找模式串的字符串 strb:模式串 《算法导论》上面包括严...
分类:
其他好文 时间:
2014-07-22 23:08:34
阅读次数:
320
处理字符串的过程中,难免会遇到字符匹配的问题。常用的字符匹配方法1. 朴素模式匹配算法(Brute-Force算法) 求子串位置的定位函数Index( S, T, pos). 模式匹配:子串的定位操作通常称作串的模式匹配。 目标串:主串S。 模式串:子串T。 匹配成功:若存在T的每个字符依次...
分类:
其他好文 时间:
2014-07-14 21:03:19
阅读次数:
286
1 /* 2 hdu 2896 病毒侵袭 ac自动机 3 从题意得知,模式串中没有重复的串出现,所以结构体中可以将last[](后缀链接)数组去掉 4 last[]数组主要是记录具有相同后缀模式串的末尾节点编号 。本题中主要是计算每一个模式串 5 在主串中有没有出现过,而不是计算出现...
分类:
其他好文 时间:
2014-06-22 11:08:48
阅读次数:
291
背景朴素匹配算法太低效了。冗余过多,已经比较过的,没必要重复;可以从比较结果中推导出来的,也没必要再重复。核心主串不回溯,变化要匹配的串的下一次比较的位置。实现两个函数,一个提供next数组,即存储要匹配的串的每一个元素匹配失败后,下一次要比较的位置的数组。另一个实现匹配。java代码public
...
分类:
其他好文 时间:
2014-06-10 11:32:20
阅读次数:
239
不使用C程序已有函数,模拟C++的strstr函数
strstr函数--输出主串的子串及其后面的所有字符...
分类:
编程语言 时间:
2014-06-08 02:14:50
阅读次数:
192
这道题本来想对了,可是因为hdu对pascal语言的限制是我认为自己想错了,结果一看题解发现自己对了……题意:给以字符串计算出以前i个字符为前缀的字符中在主串中出现的次数和如:num(abab)=num(a)+num(ab)+num(aba)+num(abab)=2+2+1+1=6;题解:next[...
分类:
其他好文 时间:
2014-06-06 17:30:22
阅读次数:
227
POJ3080,题目链接http://poj.org/problem?id=3080题意:就是求m个长度为60的字符串的最长连续公共子串,2=3的所有连续子串找出来,然后由短到长查看所有主串是否有该子串。2.如果发现一个公共子串,那么就开始找长度+1的公共子串;如果指定长度的所有子串都找不出一条是共...
分类:
其他好文 时间:
2014-06-04 16:30:49
阅读次数:
246
通过操作指针,与指针做函数参数'实现字串在主串中出现的次数,然后将出现的部分按照要求进行替换...
分类:
其他好文 时间:
2014-05-15 05:58:16
阅读次数:
218
算法:
#include
using namespace std;
#define MAXSIZE 100
void calNext(const char *T,int *next);//T为模式串,next为预判数组
int kmp_match(const char *S,const char *T);//在主串S中寻找模式串T,如果找到返回其位置,否则返回-1。位置从0开始
void ...
分类:
其他好文 时间:
2014-05-02 02:25:40
阅读次数:
280