理论参考:阮一峰老师http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html#include "stdafx.h"#include #include #include #inclu...
分类:
其他好文 时间:
2015-05-16 01:23:27
阅读次数:
160
传送门在这里
题意:给出一个字符串的一个子串,告诉你子串在某些位置和原串匹配,求一共有多少可能的原串
思路:其实就是要判断给出子串的所有前缀和后缀哪些是相等的。
首先kmp的next数组求的是所有前缀子串(a1 a1a2 a1a2a3...)中长度最大的前缀和后缀的长度,
设字符串长度为len,那么next[len]得到的是整个字符串中长度最长的相等的前缀和后缀,并且可知,所有起始位置...
分类:
其他好文 时间:
2015-05-13 19:57:22
阅读次数:
153
lex负责词法解析,而yacc负责语法解析,其实说白了就是lex负责根据指定的正则表达式,将输入的字符串匹配成一个一个的token,同时允许用户将当前匹配到的字符串进行处理,并且允许返回一个标识当前token的标识码。而yacc则负责进行语法解析,将一个个的token最终形成一个完整的语法。 lex...
分类:
其他好文 时间:
2015-05-13 14:30:30
阅读次数:
109
HDU 3973 AC's String (substr 强行匹配)...
分类:
其他好文 时间:
2015-05-12 01:43:04
阅读次数:
120
概述??kmp算法我觉得有两个关键点:1.计算模式字符串的部分匹配表(这时候,自己跟自己比较)2.匹配主串时候,主串字符只遍历一遍,匹配时候,根据模式串的部分匹配表计算模式串应该移动的位置。kmp算法时间复杂度为O(m+n);下面我实现的算法代码(PHP)理论关于kmp理论部分,这篇文章写得好:http://kb.cnblogs.com/page/176818/。我就不再赘述了。计算部分匹配表fun...
分类:
编程语言 时间:
2015-05-08 09:28:51
阅读次数:
172
正则表达式(regular expression)——描述一种字符串匹配模式,可以用来检测一个字符串是否包含特定的子串、用其他字符串将其代替、提取出某个符合要求的子串。 正则表达式 由普通字符 和 元字符 组成。 普通字符: 普通字符包括没有显示指定为元字符的所有可打印或不可打印字符。其包括:大小字...
分类:
其他好文 时间:
2015-05-07 23:30:03
阅读次数:
246
问题描述:在匹配串中寻找模式串,如:匹配串:THISISASIMPLE EXAMPLE模式串(搜索词):EXAMPLE算法1:Brute Force算法(蛮力搜索法)首先将匹配串和模式串左对齐,然后从左向右一个一个进行比较,如果不成功则模式串向右移动一个单位。算法2:Karp Rabin算法模式串:...
分类:
编程语言 时间:
2015-05-07 16:02:36
阅读次数:
139
KMP算法及其改进字符串匹配算法也就是从一个很长的字符串里面找出与我们手中的字符串相匹配的字符串(是这个大字符串的第几个字符开始),对于这个问题我们有很简单的解法,叫BF算法,Brute Force也就是蛮力的意思,充分依靠计算能力来解决问题的方法,对于这种解法可以用下面的图片来表述:上面的算法就是...
分类:
编程语言 时间:
2015-05-07 11:46:30
阅读次数:
292
KMP算法使用JAVA语言实现。
package BFKMPBM;
public class BFMatching {
public static void main(String[] args) {
long startTime;
long endTime;
long durationTime;
startTime = System.nanoTime();
KM...
分类:
编程语言 时间:
2015-05-06 15:15:55
阅读次数:
160
BM算法通过Java语言实现。
public class BFMatching {
public static void main(String[] args) {
long startTime;
long endTime;
long durationTime;
startTime = System.nanoTime();
BM();
endTime = Sys...
分类:
编程语言 时间:
2015-05-06 15:09:33
阅读次数:
156