《大话数据结构》--- 第五章 串

串是由零个或多个字符组成的有限序列,幽冥教字符串。一般记作 a = "aaaaaa";串中的字符数目n称为串的长度。零个字符的串称为空串。

空格串是只包含空格的串。空格串有内容有长度。

串中任意个数的连续字符组成的子序列称为该串的子串。包含子串的串称为主串。

子串在住串中的位置就是子串的第一个字符在主串中的序号。

串可以比较大小。串的比较是通过串的字符之间的编码比较的。即ASCII码。

子串的定位操作通常称为串的模式匹配。

KMP模式匹配算法。

简单理解。比较a串中是否有b串。匹配中找到a串与b串相等的字符。本次匹配结束后如果不成功,那么a串中这个字符与到匹配失败字符中间的这段距离是不需要遍历的。在一个串中有相同字符时,需要考虑到一个数组next的。即相同字符的下标差值存储的数组。

abcabx

当 n = 1时, next[1] = 0;

n = 2时,next[2] = 1;

n = 3时,next[3] = 1;

n = 4时,next[4] = 1;

n = 5时,存储前4个字符的串中,前缀字符与后缀字符相等,前缀字符与后缀字符中间包含了两个字符,所以next[5] = 2;

上一个差值也可能是一个之前相同的小串与小串的距离

n = 6时,由于前缀字符与前缀字符的后一个字符和后缀字符与后缀字符的前一个字符相等,所以差值+1,next[6] = 3;

本算法需要开单章详细理解。

时间: 2024-11-17 21:50:02

《大话数据结构》--- 第五章 串的相关文章

《大话数据结构》第一章读后感想

一.关于数据结构的定义:数据和结构 一类数据由多个数据对象组成,数据对象的最小单位是数据元素,但是对于数据结构这本书来说,数据对象是我们所关注的单位. 结构分为逻辑结构和物理结构.其中逻辑结构是面向问题的,包括集合结构.线性结构.树形结构.图形结构.而物理结构即存储结构,包括顺序存储结构和链接存储结构两种.链接存储结构通过指针表示数据对象之间的逻辑结构. 二.抽象数据类型 抽象数据类型(ADT)指一个数学模型及定义在该模型上的一组操作.程序员可以在写程序的过程中自己定义. 下课了!第二章----

DS|数据结构||第五章小结

本章主要学习了树和二叉树相关知识,包括二叉树的性质和存储结构(双亲表示法.孩子表示法.孩子兄弟法),二叉树的前.中.后序遍历算法等,还了解了哈夫曼树和哈夫曼编码的构造方法,以及森林与二叉树之间的相互转换方法. 实验课老师带领我们做了“深入虎穴”这道题: 7-2 深入虎穴 (30 分) 著名的王牌间谍 007 需要执行一次任务,获取敌方的机密情报.已知情报藏在一个地下迷宫里,迷宫只有一个入口,里面有很多条通路,每条路通向一扇门.每一扇门背后或者是一个房间,或者又有很多条路,同样是每条路通向一扇门…

《大话数据结构》---第一章 数据结构绪论

数据结构是一门研究非数值计算的程序设计问题中的操作对象,以前他们之间的关系和操作等相关问题的学科. 程序设计 = 数据结构 + 算法 数据:描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合.数据元素:组成数据的.有一定意义的基本单位,在计算机中通常作为整体处理.也被称为记录.数据项:一个数据元素可以由若干个数据项组成,数据项是数据不可分割的最小单位.数据对象:是性质相同的数据元素的集合,是数据的子集.(性质相同即具有相同数量和类型的数据项)数据结构:是

数据结构(五)串

定义 串的存储结构 顺序存储结构 当长度超过了预分配的空间,需要重新动态分配新的空间 链式存储结构 一个节点对应一个字符会造成资源浪费,所以一个节点可以放多个字符(相当于链式的每个节点内置了一个顺序存储结构),具体存几个字符需要按实际情况,否则会影响串的处理效率 匹配算法 朴素模式匹配算法 .... kmp匹配算法 kmp -> 克努特-莫里斯-普拉特 简单理解就是,避免了匹配失败后的回溯匹配 详细解释可以参考 http://www.ruanyifeng.com/blog/2013/05/Knu

大话数据结构--第2章 算法

2.1算法的特性 算法具有五个基本特性:输入.输出.有穷性.确定性.可行性. 2.2算法设计的要求 正确性.可读性.健壮性.时间效率高和存储量低 2.3算法时间复杂度 2.2算法空间复杂度 结束语 算法的优劣直接决定了程序运行的效率

大话数据结构 【六】串

由零个或多个字符组成的有限序列,又名字符串 s 是串的名称 用双引号 或 单引号 括起来的字符序列 是 串的值 字符数目n 是串的长度 空串:0个字符的串,长度为0——>  s = "" 空格串:——> s = " " 子串:串中任意个数的连续字符组成的子序列称为该串的子串 包含子串的串称为主串 串的比较 s1 = "abcd",s2 = "acbd" 第一个字母都是a,认为不存在大小差异 第二个字母中”b“在字母

数据结构 第4章 串、数组和广义表 单元小结(1)重点 BF算法

BF算法 考试必考 !!!!!背下来!!!! int lndex_BF(string s,string t,int pos) {//返回模式t在主串s中第pos个字符开始第一次出现的位置下标 //若不存在,则返回值为-1 //其中,t非空,1<=pos<=StrLength(s) int i,j; i = pos-1;//下标 j = 0;//下标 while(i<s.length()&&j<t.length()){ if(s[i] == t[j]) { ++i;

C语言数据结构——第四章 串

四.串 4.1-串的基本概念 串的定义 串是由数字.字母或其他字符组成的有限序列,一般记为 StringName = “a[0]a[1]a[2]···a[i]···a[n-1]”(n>0,0<=i<=n-1) 其中StringName是串名,双引号内的序列是该串的值,n为串的长度,i为某一字符在该串中的下标 串的常用术语 串的长度:串中包含字符个数即为串的长度 空串:串中不包含任何字符时被称为空串,此时串的长度为0 空格串:由一个或多个空格组成的串被称为空格串,它的长度是串中空格的个数

(数据结构第五章)广义表的头尾链表存储表示

/*********广义表的头尾链表存储表示**************/ #include<cstdio> #include<algorithm> using namespace std; typedef int AtomType; ///定义AtomType为int类型 typedef enum { ATOM, LIST } ElemTag; ///ATOM==0; 原子,LIST==1:子表 typedef struct FLNode { ElemTag tag; ///公共