接着上文(地址),我们来聊一聊自动机算法(有限自动机字符串匹配算法)和KMP算法。====#=有限自动机算法=#===== 关于有限自动机,网上的分析的资源,大部分都很笼统,算导上的知识点,全是数学公式,看的也会特别累。因此,打算从算导的第一题开始讲起。从习题入手,讲这个算法的思想。例子:对模...
分类:
编程语言 时间:
2015-09-04 08:43:25
阅读次数:
281
字符串的匹配的算法一直都是比较基础的算法,我们本科数据结构就学过了严蔚敏的KMP算法。KMP算法应该是最高效的一种算法,但是确实稍微有点难理解。所以打算,开这个博客,一步步的介绍4种匹配的算法。也是《算法导论》上提到的。我会把提到的四种算法全部用c/c++语言实现。提供参考学习。下图的表格,介绍.....
分类:
编程语言 时间:
2015-09-03 00:43:13
阅读次数:
261
Description某人读论文,一篇论文是由许多单词组成。但他发现一个单词会在论文中出现很多次,现在想知道每个单词分别在论文中出现多少次。Input第一个一个整数N,表示有多少个单词,接下来N行每行一个单词。每个单词由小写字母组成,N<=200,单词长度不超过10^6Output输出N个整数,第i行的数字表示第i个单词在文章中出现了多少次。Sample Input3aaaaaa
Sample O...
分类:
其他好文 时间:
2015-08-31 08:47:06
阅读次数:
214
CSS3选择器a字符串匹配属性选择器E[属性^="val"]E[属性¥="val"]E[属性*="val"]E[属性="val"]b结构性伪类E:nth-chid(n)E:nth-last-chid(n)E:first-chid(n)E:last-chid(n)E:only-child(n)E:nt...
分类:
Web程序 时间:
2015-08-30 22:50:26
阅读次数:
154
关于css3我先介绍几个简单的选择器:先进行设置:字符串匹配属性选择器:E[alt^="a"] 选择属性中以a开头的元素:E[alt$="a"] 选择属性中以a结尾的元素:E[alt*="a"] 选择属性中包含a的元素:见以下例子:结果如下:伪类选择器:先看以下的例子:结果:以上是几个选择器作用的结...
分类:
Web程序 时间:
2015-08-30 19:14:42
阅读次数:
136
KMP优化KMP算法是有优化版本的,之前写过文章简单的讨论了基本的KMP算法思想,但是对于一些含有连续重复字符的字符串,会出现多次冗余的比较。
例如:字符串S=“aaababa”和模式串P=“aaac”比较时,会出现多次的不必要的比较,这个我会在下面细说。Next数组重定义我们首先要解决的问题就是next数组的意义,之前的我写的KMP文章里面,next数组的意义是:字符串真子串中既是前缀串同时又是...
分类:
其他好文 时间:
2015-08-30 17:36:08
阅读次数:
255
模版集合个数减少是因为匹配串集合中没被匹配过的一对串匹配了。所以就是找一个二分图最大匹配。代码里没有显式地建立二分图,可以假想两个集合X和Y,由于两个集合都会跑一遍,所以一个匹配会被算两次,返回的时候除以2就行了。拾起几乎快忘了的匈牙利算法。。。#includeusing namespace std...
分类:
系统相关 时间:
2015-08-29 21:40:13
阅读次数:
143
[1]定义:正则又叫规则或模式,是一个强大的字符串匹配工具,在js中是一个对象[2]特性: [2.1]贪婪性,匹配最长的 [2.2]懒惰性,不设置/g,则只匹配第1个[3]两种写法: [3.1]perl写法(使用字面量形式): var expression = /pattern/flag...
分类:
编程语言 时间:
2015-08-29 11:04:10
阅读次数:
172
我们在一个母字符串中查找一个子字符串有很多方法。KMP是一种最常见的改进算法,它可以在匹配过程中失配的情况下,有效地多往后面跳几个字符,加快匹配速度。
当然我们可以看到这个算法针对的是子串有对称属性,如果有对称属性,那么就需要向前查找是否有可以再次匹配的内容。
在KMP算法中有个数组,叫做前缀数组,也有的叫next数组,每一个子串有一个固定的next数组,它记录着字符串匹配过程中失配情况...
分类:
编程语言 时间:
2015-08-29 00:56:27
阅读次数:
184
BM算法好后缀规则的公式:对于长度为m的模式串P,在i处失配时,模式串向前滑动的距离next[i]等于:next[i]= { next[k]; 存在最大的K (1 < k <= i),使得 PkPk+1..Pk+m-i == PiPi+1..Pm 1; i = m; i-k+1; 存在最大的K (1...
分类:
编程语言 时间:
2015-08-28 17:01:12
阅读次数:
137