前言-死锁案例 案例分析:运行结果是程序阻塞在dispatch_sync()处。由于main线程执行到dispatch_sync()处,线程处于等待状态。将block任务块添加到主串行队列最后,block等待当前任务(即正在主线程中执行的任务)执行完毕,而当前任务因为阻塞无法结束,导致两边都在等待, ...
分类:
其他好文 时间:
2017-06-09 20:19:43
阅读次数:
225
一、概要: KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的(先了解BF算法)。具体实现就是实现一个next()函数,函数本身包含了模式串的局部匹配信息。时间复杂度O(m+n)。 二、怎么求模式串next[n]的值: 定义: (1)next[0]= -1 意 ...
分类:
编程语言 时间:
2017-05-01 12:57:58
阅读次数:
287
复习串的朴素模式匹配算法模式匹配:子串定位运算,在主串中找出子串出现的位置。在串匹配中,将主串S称为目标(串),子串T称为模式(串)。如果在主串S中能够找到子串T,则称匹配成功,返回第一个和子串T中第一个字符相等的字符在主串S中的序号,否则,称匹配失败,返回0。算法思..
分类:
编程语言 时间:
2017-04-14 10:15:04
阅读次数:
199
求失配函数的思路:我们设主串为M,子串为N,则 失配函数存在这样的递推关系,求nex[i+1]时:使j=nex[i]。1、若N[j]==N[i]则nex[i+1]=j+1;2、若N[j]!=N[i]则使j=nex[j];3、若j=0则直接进行步骤1;就这么简单。。但是好难理解。POJ3461附标程: ...
分类:
编程语言 时间:
2017-03-06 20:34:06
阅读次数:
216
http://acm.hdu.edu.cn/showproblem.php?pid=2087 题意:给定一个文本串和给定一个模式串,求文本串中有几个模式串。匹配成功的串不可以再使用。 思路:题目不难,还是可以直接套用KMP模板。需要注意的就是如果在主串中如果成功匹配了一次,那么模式串应该回到开头,而 ...
分类:
其他好文 时间:
2017-01-30 13:19:54
阅读次数:
212
扩展kmp LRH 所谓扩展kmp指的是与kmp相似的求辅助数组的原理,但是本身与kmp关系不大。 1.exkmp的用途:给定一个主串s和一个子串t,求出s中每一个后缀和子串t的最长公共前缀。 2.算法推导: 给定一个主串:S=aaaaaaaaaabaaa T=aaaaaaaaaaa (下标都是从零 ...
分类:
其他好文 时间:
2017-01-14 22:03:40
阅读次数:
316
前言: 目录: 1.串类型的定义 2.串的表示和实现 3.串的模式匹配算法 4.串操作应用举例 正文: 串的模式匹配即,在给定主串S 中,搜索子串T 的位置,如果存在T 则返回其所在位置,否则返回 0 串的模式匹配算法 主串 S: a b c a b c d s v t 子串 T: a b c d ...
分类:
编程语言 时间:
2016-12-29 03:18:14
阅读次数:
222
今天复习数据结构,发现自己之前忽视了很久的一个算法,关于求串的匹配算法。这里有两种解决办法。 其一是常规解决思路对串进行挨个匹配,若以i指向主串,j指向匹配串,则在匹配过程中需要不停的回溯i指针,假设T={ababcabababab} S={ababa} 我们可以发现该算法在匹配时,一旦遇见不匹配的 ...
分类:
编程语言 时间:
2016-12-20 00:53:59
阅读次数:
179
1. 前言 字符串匹配是一个经典算法问题,展开来讲各类问题多达几十种,有名称的算法也不下三十种,所以需要深入学习的东西有很多。这次我们来探讨一个最简单的问题,假设现在随机输入一个长度为m的主串T,另...
分类:
编程语言 时间:
2016-12-04 21:14:59
阅读次数:
237