不敢去做一件事就会一直觉得它很难。。
以前一直觉得AC自动机应该超难写,学了以后发现实在太好写了。。
AC自动机的fail指针与KMP算法的next数组是极为相似的,都是通过这些来减少冗余的扫描,所以我也把AC自动机的fail指针名字直接开成next了。。
AC自动机与KMP的不同在于KMP是单模式串匹配,AC自动机是多模式串匹配,所以AC自动机可以理解为就是在trie树上加上一些next指...
分类:
其他好文 时间:
2015-04-18 10:05:17
阅读次数:
178
算法图搜索(广度优先、深度优先)深度优先特别重要排序动态规划匹配算法和网络流算法正则表达式和字符串匹配数据结构图 (树尤其重要)Map堆栈/队列Tries | 字典树额外推荐贪婪算法概率方法近似算法算法:三路划分-快速排序合并排序(更具扩展性,复杂度类似快速排序)DF/BF 搜索 (要知道使用场景)...
分类:
编程语言 时间:
2015-04-17 11:09:01
阅读次数:
191
在网上看到的大部分采用DFA算法,大概思路如下:
1:DFA采用Map的hash机制,将敏感词单个拆分,以第1个字符为key,其他值依旧使用map相连,形成了大map套用小map..
2:遍历需要过滤的字符串,获取每一个字符,根据get(key)来检测是否为敏感词。
我最开始是想到用正则来提取数据中的敏感数据,然后获取敏感字所在索引位置,再利用StringBuilder.replace(start,end,str)来替换,但经过测试发现使用正则有2个问题:
1:因为是正则要整串匹配,所以效率慢,同样3...
分类:
其他好文 时间:
2015-04-16 17:39:07
阅读次数:
272
#include #include const int N = 1000000 + 5;char s[N],t[N];int lens,lent;int next[N];void get_fail() { next[0] = -1; for (int i = 1,j = -1; i < ...
分类:
编程语言 时间:
2015-04-14 22:49:26
阅读次数:
139
KMP算法理解
字符串匹配算法之KMP算法一直以来都很难理解,虽然知道要减少不必要的匹配,但是仍然不懂里面的思想,即使看着代码。后来看到(2)中博客中的解释才清晰了许多,
不至于在什么DFA,前缀表,部分匹配表等概念中迷失自己。主要的指导思想在于当发生不匹配的时候如何更有效的利用现在已经匹配的字符串的信息来加速移动过程,
部分匹配表的存在正是挖掘一个字符串中前缀和后缀中最长公共串,比...
分类:
编程语言 时间:
2015-04-14 21:33:53
阅读次数:
207
1.定义:正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。 2.用途:字符串匹配(字符匹配)字符串...
分类:
编程语言 时间:
2015-04-14 00:28:47
阅读次数:
180
所有字符串匹配算法的核心问题是,当出现不匹配时,如何向后移动模式串一、暴力匹配算法 如果要匹配一个字符串s 和一个模式串p,则从i=0开始依次匹配s[i:(i+len(p))],简单粗暴,代码如下:def matcher(t, p): # param t: the string to chec...
分类:
编程语言 时间:
2015-04-13 22:48:09
阅读次数:
154
由于KMP算法比较难,所以建议初学者分两个阶段学习。
第一个阶段先理解算法思想,可以参考这篇文章:点击打开链接
第二个阶段,理解算法的具体实现,本文主要讲解这部分,需要注意的地方都在程序里了,自己看吧
程序(调试通过):
#include
#include
int KMP(char* s, char* pattern, int start, int next[]);
void...
分类:
编程语言 时间:
2015-04-13 21:00:12
阅读次数:
214
首先推荐这篇KMP思想的介绍:字符串匹配的KMP算法
KMP代码的关键是:
1、得到搜索串每个字符的匹配值
2、当字符匹配失败时的转移
(搜索串指搜索目标串。)
1:
第一个循环:遍历每个字符,表示搜索的是 该字符及之前所有字符组成的串。
第二个循环:遍历所有长度的子串。
第三个循环:比较子串是否相同。
搜索的目标是:所有相同的子串中最长字串的长度。所以维护一...
分类:
其他好文 时间:
2015-04-13 09:39:22
阅读次数:
114
杭电2594字符串匹配,java实现,绝对不超内存,不超时!!...
分类:
编程语言 时间:
2015-04-12 00:04:34
阅读次数:
234