一.本章内容小结 本章我们学习了串,数组和广义表 首先,我们学习了串,线性表主要由顺序表示或链式表示。在实际应用中,常以栈,队列,字符串等特殊形式使用。线性表和串的操作基本类似,但串的操作针对串的整体,而线性表则针对单个元素。 概念的理解并不复杂,接下来是实现所用的算法 1.BF算法 BF算法即暴风 ...
分类:
其他好文 时间:
2020-05-04 21:34:50
阅读次数:
75
一、本章学习小结:第四章主要学习了串、数组和广义表,与以前学习的区别在于,本章将它们视为线性表。 1)串是内容受限的线性表,考虑到存储效率和算法方便性,一般采用顺序存储结构;考虑到串变量相差较大,可采用动态分配的方法;为了便于操作,可增设尾指针。 串的主要应用场景是模式匹配,其中有BF算法和KMP算 ...
分类:
其他好文 时间:
2020-05-04 12:59:26
阅读次数:
68
BF算法 BF算法的思想,就是一个字符一个字符的比较,如果不成功,就回溯到最开始第一个匹配成功的字符位置,从下一个字符开始从新进行匹配操作 其他算法未完待续...... ...
分类:
编程语言 时间:
2020-04-26 21:18:47
阅读次数:
109
[TOC] 在谈 AC 自动机之前,我们需要学习一些预备知识,请你先详细阅读本博客的前两部分。 KMP 算法 BF 算法 BF算法,即暴风(Brute Force)算法,是普通的模式匹配算法,不是要匹配字符吗?那我一个一个直接匹配不就好啦。BF算法的思想就是将目标串 S 的第一个字符与模式串 T 的 ...
分类:
其他好文 时间:
2020-04-08 22:23:14
阅读次数:
82
一.数据结构 1.概念 1.数据类型和抽象数据类型是不同的概念。 2.逻辑结构分为线性结构(一对一)、树形结构(一对多)、图形结构(多对多)。 3.时间复杂度(T(n)=O(f(n));空间复杂度(占用的内存空间)。 4.算法 1.BF算法:时间复杂度最坏为O(n m)。 2.kmp算法:时间复杂度 ...
分类:
编程语言 时间:
2020-03-28 01:13:29
阅读次数:
84
示例: 1. 已知字符串str1="acabaabaabcacaabc",求str2="abaabcac"是否在字符串str1中? 2. DNA病毒检测。已知患者DNA序列求病毒DNA序列是否在患者DNA中出现过?病毒DNA为环状结构(即首尾相连)。 此文以问题1为例进行解答。 一、BF算法: 即暴 ...
分类:
编程语言 时间:
2020-03-05 20:54:49
阅读次数:
75
typedef struct { char str[MAX]; int length; }SString; BF算法 int Index(SString *S, SString *T) { int i, j; i = 1; j = 1; while (i<=S->length&&j<=T->leng ...
分类:
编程语言 时间:
2019-12-23 22:46:23
阅读次数:
133
```c#include #include #include #include //以下为KMP算法void get_next(char * T, int next[]) //修正前的next数组{ int i = 1, j = 0; next[0] = -1; next[1] = 0; int m... ...
分类:
编程语言 时间:
2019-12-14 14:00:25
阅读次数:
115
贴上源代码: 这是一种低效的模式匹配算法。叫做BF算法。 主要思想十分简单: 给出两个字符串,分别为主串S和子串T,记下标为i,j。分别从第一个字符开始比较(即i=j=0)。当S[i]==T[j]时,继续比较下一个;当S[i]!=T[j]时,j=0(重新从头开始比较子串),i的值赋为i j+1。(关 ...
分类:
编程语言 时间:
2019-11-11 09:40:48
阅读次数:
117
一、BF算法的基本思想 BF(Brute Force)算法是模式匹配中最简单、最直观的算法。该算法最基本的思想是从主串的第 start 个字符起和模式P(要检索的子串)的第1个字符比较,如果相等,则逐个比较后续字符;比较过程中一旦发现不相等的情况,则回溯到主串的第 start+1 个字符位置,重新和 ...
分类:
编程语言 时间:
2019-11-06 00:49:52
阅读次数:
93