这两天又看了一遍《算法导论》上面的字符串匹配那一节,下面是实现的几个程序,可能有错误,仅供参考和交流。关于详细的讲解,网上有很多,大多数算法及数据结构书中都应该有涉及,由于时间限制,在这就不重复了。需要说明的是: stra:主串,及需要从中寻找模式串的字符串 strb:模式串 《算法导论》上面包括严...
分类:
其他好文 时间:
2014-07-22 23:08:34
阅读次数:
320
亲和串
时间限制:1000 ms | 内存限制:65535 KB
难度:3
描述最近zyc遇到了一个很棘手的问题:判断亲和串,以前判断亲和串的时候直接可以看出来,但现在不同了,现在给出的两字符串都非常的大,看的zyc头都晕了。于是zyc希望大家能帮他想一个办法来快速判断亲和串。亲和串定义:给定两个字符串s1和s2,如果能通过s1循环移动,使s2包含在s1中,那么我们就...
分类:
其他好文 时间:
2014-05-03 17:08:31
阅读次数:
247
题意:给一个字符串,问最长的一个子串A,他是前缀,同时是后缀,并且中间也出现过A。并且出现的三个A都不没有重叠部分。
解法:先KMP求出失配数组,然后将所有的是后缀且是前缀的打上标记,然后遍历整个next数组,(对于每个位置的next来说,一直next向前取就是找到此前缀的一个个是整个字符串前缀的后缀,比较绕)暴力枚举判断每个串的所有匹配前缀的后缀是否合法。
代码:/*****...
分类:
其他好文 时间:
2014-05-02 19:36:54
阅读次数:
476
算法:
#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
ji
克努特-莫里斯-普拉特算法,简称KMP算法。...
分类:
其他好文 时间:
2014-05-01 18:18:07
阅读次数:
327
字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB
ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科...
分类:
其他好文 时间:
2014-05-01 08:40:55
阅读次数:
316
在Java中,字符串的匹配可以使用下面两种方法:
1、使用正则表达式判断字符串匹配
2、使用Pattern类和Matcher类判断字符串匹配
正则表达式的字符串匹配:
正则表达式:定义一组字符串的一系列字符和符号,它由常量字符和特殊符号构成。
下面是正则表达式的一些预定义字符类,实际上是一些转...
分类:
编程语言 时间:
2014-04-30 22:48:39
阅读次数:
410
在串匹配模式中,KMP算法较蛮力法是高效的算法,我觉得其中最重要的一点就是求next数组:看了很多资料才弄明白求next数组是怎么求的,我发现我的忘性真的比记性大很多,每次看到KMP算法求next数组都得花很长时间去看怎么求,虽然看了很多遍了,但还是容易忘,所以我今天非得把它记下来,这样我下次看到的...
分类:
其他好文 时间:
2014-04-29 19:26:58
阅读次数:
429
1 #include 2 #include 3 using namespace std; 4 5 6
7 class myString 8 { 9 private: 10 string mainstr; 11 int size; ...
分类:
其他好文 时间:
2014-04-27 20:45:57
阅读次数:
591