前言虽从事企业应用的设计与开发,闲暇之时,还是偶尔涉猎数学和算法的东西,本篇根据个人角度来写一点关于KMP串匹配的东西,一方面向伟人致敬,另一方面也是练练手,头脑风暴背景目标串: T(1…..n)模式串: P(1…..m)输出:搜索P在T中的位置 s,令 T(s…s+m-1) === P(1…m)例...
分类:
编程语言 时间:
2014-10-20 23:13:12
阅读次数:
176
题目链接:http://poj.org/problem?id=3461思路: 字符串匹配问题,使用KMP算法解决。代码:#include char T[1000005], W[10005];int Next[10005];int Len_T, Len_W;void GetNext( ){ ...
分类:
其他好文 时间:
2014-10-20 21:05:04
阅读次数:
138
KMP算法
BF算法
BF算法就是我们最基本的求解字符串匹配的算法,算法的时间复杂度为O(M*N),空间复杂度为O(1),具体过程如下:
串
第一次
第二次
第三次
第四次
模式串S[i]
abcababc
abcababc
abcababc
abcababc
匹配串T[j]
...
分类:
编程语言 时间:
2014-10-20 17:26:30
阅读次数:
233
算法1. 图搜索(广度搜素、深度搜索)深度优先特别重要2. 排序3. 动态规划4. 匹配算法和网络流算法5. 正则表达式和字符串匹配6. 三路划分-快速排序7. 合并排序(更具扩展性,复杂度类似快速排序)8. DF/BF 搜索 (要知道使用场景)9. Prim/Kruskal(最小生成树)10. D...
分类:
其他好文 时间:
2014-10-20 17:02:54
阅读次数:
212
转自:http://www.cnblogs.com/lvpei/archive/2010/08/04/1792409.html中文分词基本算法主要分类基于词典的方法、基于统计的方法、基于规则的方法、(传说中还有基于理解的-神经网络-专家系统,按下不表)1、基于词典的方法(字符串匹配,机械分词方法)定...
分类:
编程语言 时间:
2014-10-18 16:51:52
阅读次数:
273
有了字符串匹配的功底,拼写错误检查也是手到擒来。引入编辑距离的概念,就可以使用前两篇用到的模块,做一个效率还算可以的拼写错误检查程序了。...
分类:
其他好文 时间:
2014-10-18 12:42:38
阅读次数:
247
【题目】就是给一个很长的字符串str 还有一个字符集比如{a,b,c} 找出str里包含{a,b,c}的最短子串。要求O(n)。【例子】字符集是a,b,c,字符串是abdcaabcx,则最短子串为abc。【分析】有题意可知,满足要求的字符串只需要包括字符集中的所有字符,并没有顺序要求当然最容易想到的...
分类:
编程语言 时间:
2014-10-18 12:33:54
阅读次数:
218
问题背景是找到原串中能够与给定串完全匹配的部分,最容易想到的双重循环比对当然不行(时间复杂度太高),最经典的解法就是KMP算法,先构造跳转表(next表),再比对,避免主串上的回溯,以节省时间。KMP算法比较难理解,本文主要对其核心next函数作以解析。
分类:
编程语言 时间:
2014-10-18 00:37:36
阅读次数:
229
一:Linux基础命令: 1、find 命令 查找文件 如 find / -name hello 查找根目录下已hello命名的文件。 2、grep命令 字符串匹配 如 grep "lucy" * -R 递归查找文件中含有“lucy”字符串的文件 3、d...
分类:
系统相关 时间:
2014-10-17 23:14:37
阅读次数:
318
KMP算法详解如果机房马上要关门了,或者你急着要和MM约会,请直接跳到第六个自然段。我们这里说的KMP不是拿来放电影的(虽然我很喜欢这个软件),而是一种算法。KMP算法是拿来处理字符串匹配的。换句话说,给你两个字符串,你需要回答,B串是否是A串的子串(A串是否包含B串)。比如,字符串A="I'm m...
分类:
其他好文 时间:
2014-10-17 18:30:54
阅读次数:
148