#include#include#include//结构的定义字符串typedef struct {char *str;//字符串int maxLength;//最大能够存放字符的长度int length;//眼下的字符长度}DString;//1.初始化操作//初始化操作用来建立和存储串的动态数组...
分类:
编程语言 时间:
2015-09-21 19:12:47
阅读次数:
268
KMP算法是字符串匹配处理中一种非常高效的算法,它的时间复杂度可以达到O(N+M),远优于普通匹配的O(NxM)。它最早是由Knuth,Morris,Pratt共同提出。算法原理普通的字符串匹配,假设从母串的A位置开始匹配,在某个位置B当母串和子串失配的时候匹配的起点会回溯到A+1处重新开始。而从A...
分类:
编程语言 时间:
2015-09-16 14:09:34
阅读次数:
239
问题背景在我们平时使用计算机的过程中,有一项使用非常频繁的功能就是字符串查找。这个问题可以描述成:给定一个字符串文本T,要从中找出是否含有某个子串P。我们把P叫做模式字符串。这个问题最直接的解法就是逐个匹配:先将T和P左对齐,从头开始依次比较P中的每个字符是否和T中对应的字符相同。例如,T为“a a...
分类:
编程语言 时间:
2015-09-14 11:46:19
阅读次数:
198
题目描述【题目】给定两个字符串str和match,长度分别为N和M。实现一个算法,如果字符串str中含有字串match,则返回match在str中的开始位置,不含有则返回-1。【举例】str=“acbc”,match=“bc”。返回2。str=“acbc”,match=“bcc”。返回-1。【要求】...
分类:
编程语言 时间:
2015-09-13 11:50:03
阅读次数:
159
kmp的代码很短,但是不太容易理解,还是先说明一下这个算法过程吧。朴素的字符串匹配大家都懂,但是效率不高,原因在哪里?匹配过程没有充分利用已经匹配好的模版的信息,比如说,i是文本串当前字符的下标,j是要匹配的模版串当前正在匹配的字符的下标。(下标都从零开始)当匹配到i = 4, j = 4的时候失配...
分类:
编程语言 时间:
2015-09-09 17:04:29
阅读次数:
126
kmp的代码很短,但是不太容易理解,还是先说明一下这个算法过程吧。朴素的字符串匹配大家都懂,但是效率不高,原因在哪里?匹配过程没有充分利用已经匹配好的模版的信息,比如说,i是文本串当前字符的下标,j是要匹配的模版串当前正在匹配的字符的下标。(下标都从零开始)当匹配到i = 4, j = 4的时候失配...
分类:
编程语言 时间:
2015-09-09 16:24:13
阅读次数:
185
时间限制:1000ms单点时限:1000ms内存限制:256MB描述小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。这一天,他们遇到了一只河蟹,于是河蟹就向小Hi和小Ho提出了那个经典的问题:“小Hi和小Ho,你们能不能够判断...
分类:
编程语言 时间:
2015-09-04 19:46:35
阅读次数:
280
一个字符串如果能简写,要么是重复多次,按题中的要求简写;要么是左右两个部分分别简写后再拼起来。dp(i, j)表示字串(i, j)所能被简写的最短的字符串。判断一个字符串是否为周期串以及求出它的周期用的KMP算法。 1 #include 2 #include 3 #include 4 #inc...
分类:
其他好文 时间:
2015-09-04 16:58:47
阅读次数:
240
接着上文(地址),我们来聊一聊自动机算法(有限自动机字符串匹配算法)和KMP算法。====#=有限自动机算法=#===== 关于有限自动机,网上的分析的资源,大部分都很笼统,算导上的知识点,全是数学公式,看的也会特别累。因此,打算从算导的第一题开始讲起。从习题入手,讲这个算法的思想。例子:对模...
分类:
编程语言 时间:
2015-09-04 08:43:25
阅读次数:
281
字符串的匹配的算法一直都是比较基础的算法,我们本科数据结构就学过了严蔚敏的KMP算法。KMP算法应该是最高效的一种算法,但是确实稍微有点难理解。所以打算,开这个博客,一步步的介绍4种匹配的算法。也是《算法导论》上提到的。我会把提到的四种算法全部用c/c++语言实现。提供参考学习。下图的表格,介绍.....
分类:
编程语言 时间:
2015-09-03 00:43:13
阅读次数:
261