大话数据结构(第五章 串)

串(string):由零个或者多个字符组成的有限序列,又名字符串。

一些概念:串无元素为空串,长度为零;串中任意个数连续字符组成的子序列称为该串的子串,包含子串的串称为主串。

1、串的比较

  串的比较是通过组成串字符之间的编码进行的,字符的编码指的是字符在对应字符集中的序号。

  计算机中常用的字符是使用标准ASCII编码,其有7位二进制数表示一个字符,总共可以表示128个字符。ASCII扩展为8位可以表示256个字符,满足以英语为主的国家。对于汉族等国家名族等,256显然不够。

  因此有了Unicode编码,一般用16进制表示,约65万个字符。为了与ASCII兼容,Unicode的前256个字符与ASCII完全相同。

   一般串的比较可以用在排序的功能上,一个应用例子就是字典里面单次的排序。

2、串的抽象数据类型

  串的逻辑结构与线性表很相似,不同之处在于串针对的是字符集。

  串的基本操作与线性表有很大区别,线性表更关注的是单个元素的操作,比如查找一个元素,插入或者删除一个元素,但是串中更多的是查找子串的位置、得到指定位置子串、替换子串等操作。

  不同的高级语言,对于串的基本操作有不同的定义方法,但除了方法名称外,实质是类似的。

3、串的存储结构

  同样,分为顺序存储和链式存储。

  顺序存储,按照预定义大小分配固定长度的存储区。

  串的链式存储结构:串的链式存储中,一个节点可以存储一个字符也可以存储多个字符。

  起始串的链式存储结构在连接串与串操作时有一定的方便之外,不如顺序存储灵活,性能不如顺序存储结构

好。

4、朴素的模式匹配算法

  在主串中查找子串,m为主串长度,n为子串长度。

  效率低

5、KMP模式匹配算法

  自己看,似乎有点复杂,没细看

原文地址:https://www.cnblogs.com/cwyblogs/p/8310448.html