1、基本概念: 目标串:s 模式串:t 模式串第 j 个元素 :t[j] 2、BF算法: 通过将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。BF算法是一种 ...
分类:
编程语言 时间:
2018-09-02 01:48:15
阅读次数:
188
串的定长顺序存储#define MAXSTRLEN 255,//超出这个长度则超出部分被舍去,称为截断 串的模式匹配: 串的定义:0个或多个字符组成的有限序列S = 'a1a2a3…….an ' n = 0时为空串串的顺序存储结构:字符数组,串的长度就是数组末尾‘\0'前面的字符个数数组需在定义时确 ...
分类:
编程语言 时间:
2018-08-20 13:15:45
阅读次数:
188
KMP算法实现 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> #define OK 1 #define ERROR 0 #define TRUE 1 #define ...
分类:
编程语言 时间:
2018-08-11 01:41:32
阅读次数:
314
(一)获取模式串T的next数组值 1.回顾 我们所知道的KMP算法next数组的作用 而KMP算法的next求值函数 2.思考 3.下面我们尝试获取下面的T串的所有next值,从中找到关联 步骤一:由上一篇博文可以知道前j1,j2前两个的next是固定值为0,1 步骤二:获取j=3时的next,此 ...
分类:
编程语言 时间:
2018-08-10 21:33:58
阅读次数:
184
模式匹配(模范匹配):子串在主串中的定位称为模式匹配或串匹配(字符串匹配) 。模式匹配成功是指在主串S中能够找到模式串T,否则,称模式串T在主串S中不存在。 以下介绍两种常见的模式匹配算法: 算法的核心思想如下: 设S为目标串,T为模式串,且不妨设: S=“s0s1s2…sn-1” , T=“t0t ...
分类:
编程语言 时间:
2018-07-15 11:06:22
阅读次数:
132
通过上一节的介绍,学习了串的普通模式匹配算法,大体思路是:模式串从主串的第一个字符开始匹配,每匹配失败,主串中记录匹配进度的指针 i 都要进行 i-j+1 的回退操作(这个过程称为“指针回溯”),同时模式串向后移动一个字符的位置。一次次的循环,直到匹配成功或者程序结束。 "KMP"算法相比于"BF" ...
分类:
编程语言 时间:
2018-05-14 11:48:34
阅读次数:
195
判断两个串之间是否存在主串与子串的关系,这个过程称为串的模式匹配。 在串的模式匹配过程,子串 T 通常被叫做“模式串”。 普通的模式匹配(“BF”算法) 判断两个串是否存在子串与主串的关系,最直接的算法就是拿着模式串,去和主串从头到尾一一比对,这就是“BF”算法的实现思想。将提供的模式串(例如 “a ...
分类:
编程语言 时间:
2018-05-13 21:04:42
阅读次数:
208
看了算法的大致步骤,然后自己一一证明了每一步的正确性,注释里写了一些理解。 这也不是新鲜的做法,只是感觉这个程序非常精巧,反复地使用数学归纳法。 让我感觉很新鲜。 ...
分类:
编程语言 时间:
2018-05-13 18:05:05
阅读次数:
224
字符串(数据结构中的串) 变态的停车场管理系统字符串的存储结构 本章介绍了字符串的三种存储结构,同时介绍了有关进行串的模式匹配的两种算法——普通模式匹配算法以及快速模式匹配算法。 建议读者在掌握普通模式匹配算法的基础上学习快速模式匹配算法,这样会理解地更深刻。 本章内容: 1. 数据结构中的字符串 ... ...
分类:
其他好文 时间:
2018-05-13 15:09:57
阅读次数:
200
基本思想: 其基本思想是从主串的第一个字符起与模式串的第一个字符比较,若相等,则继续逐个字符的后续比较,否则从主串的第二个字符起与模式串的第一个字符重新开始比较,直至模式串中的每个字符依次和主串中的一个连续的字符序列相等时为止,此时称为匹配成功,否则称为匹配失败。 以字符数组存储字符串,实现朴素的模 ...
分类:
编程语言 时间:
2018-05-09 01:15:20
阅读次数:
214