大话数据结构--初始串

简介: 大话数据结构--初始串

前言


废话不多,数据结构必须学! 每天更新一章,一篇写不完的话会分成两篇来写~


五、串


5.1串的定义


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

一般记为s = "a1a2a3a4......an"(n>0),其中,s是串的名称,用双引号括起来的字符序列是串的值,单引号不属于串的内容

串中的字符数目n称为串的长度,零个字符的串称为空串,可以用“”表示也可以用空集表示


5.2串的比较


两个数字其实很好比较,但是字符串之间是如何进行比较的呢?

比如:“silly” 和“stupid”它俩谁大?

第一个字母都是s,我们认为大小不存在差异,而第二个字母,i比t更靠前,所以我们说:“silly” > "stupid"

事实上串的比较是通过组成串的字符之间的编码来进行的,而字符的编码指的是字符在对应字符集的序号

计算机中常用字符是使用标准ASCII编码,更准确一点,由7位二进制数表示一个字符,共可以表示128个字符,后来不够用了扩展ASCII码由8位二进制数表示一个字符,共可以表示256个字符,已经足够满足以英语为主的语言和特殊符号进行输入、存储、输出等操作的字符需要了。

显然这256个字符是不够的,因此后来就有了Unicode 编码,比较常用的是由16位的二进制数表示-一个字符,这样总共就可以表示216个字符,约是65万多个字符,足够表示世界上所有语言的所有字符了。当然,为了和ASCII码兼容Unicode的前256个字符与ASCII码完全相同。


5.3串的抽象数据类型


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

ADT 串(string)
 Data
     串中元素仅由一个字符组成,相邻元素具有前驱和后继关系。
 Operation
     StrAssign (T,*chars) :生成一个其值等于字符串常量chars的串T。
     StrCopy(T,s):串S存在,由串S复制得串T。
     ClearString(s) :串S存在,将串清空。
     StringEmpty(s) :若串S为空,返回true,否则返回false。
     StrLength(s) :返回串S的元素个数,即串的长度。
     StrCompare (S,T) :若S>T,返回值>0,若S=T,返回0,若S<T,返回值<0。
     Concat (T,S1,S2) :用T返回由S1和S2联接而成的新串。
     SubString (Sub,s,pos,len) :串S存在,1≤pos≤StrLength(s),
                                 且0≤len≤StrLength (S) -pos+1,用Sub返
                                 回串S的第pos个字符起长度为len的子串。
     Index (S,T,pos) :串S和T存在,T是非空串,1≤pos≤StrLength(s)。
                     若主串S中存在和串T值相同的子串,则返回它在主串S中
                     第pos个字符之后第一次出现的位置,否则返回0。
     Replace (s,T,v):串S、T和V存在,T是非空串。用V替换主串s中出现的所有
                      与T相等的不重叠的子串。
     StrInsert (s,pos,t) :串S和T存在,1≤pos≤StrLength(s) +1。
                          在串S的第pos个字符之前插入串T。
     StrDelete (S,pos,len) :串S存在,1≤pos≤StrLength (s) -len+1。
                          从串S中删除第pos个字符起长度为len的子串。
 endADT

下一节我们来介绍串的存储结构和一些常见的模式匹配算法



相关文章
|
Oracle 关系型数据库 MySQL
mysql数据库安装一
mysql数据库安装一
122 0
|
7月前
|
人工智能 安全 数据挖掘
普通人用DeepSeek的20个神仙操作,看完效率翻倍!
DeepSeek不仅是技术宅的玩具,更是普通人生活的瑞士军刀。从作业辅导到职场提升,从家庭管理到法律援助,再到副业创收与情感沟通,它为生活带来全方位升级。学会以下20个实用技巧,让你轻松驾驭AI,效率翻倍!无论是学习、工作还是日常琐事,DeepSeek都能成为你的贴心助手,让技术隐形,让生活发光。立即体验,开启属于你的效率革命!
275 7
|
Java 开发者
java16面向对象编程介绍
java16面向对象编程介绍
78 1
|
SQL 存储 Windows
微软SQL 2019,“无法连接到WMI提供程序,您没有权限或者该服务器无法访问”
微软SQL 2019,解决“无法连接到WMI提供程序,您没有权限或者该服务器无法访问”的方法
469 0
微软SQL 2019,“无法连接到WMI提供程序,您没有权限或者该服务器无法访问”
|
弹性计算 JavaScript
ECS使用体验
ECS使用体验
139 1
ECS使用体验
|
存储 Linux 开发工具
.git文件夹探秘,理解git运作机制
近期需要给 git 仓库制作一个 `commit-msg` 钩子,进入 `.git/hooks` 文件夹正准备干活,突然想知道其它 git hooks 都是干啥的?`.git` 文件夹里面那么多文件,又都是干什么的呢?于是产生了这篇文章。 另外,想要 `git` 进阶,了解 `.git` 文件夹也是最佳切入点,关于 `git` 运作机制的线索都可以在这里找到。 ### `.git`
8415 2
|
C++
|
弹性计算 Ubuntu 网络安全
ECS使用体验
使用云服务器搭建了两个游戏服务器,开黑很快乐
|
SQL 存储 NoSQL
基于Tablestore的一站式物联网存储解决方案-数据湖分析
## 背景 在共享充电宝场景中,一些日常的运维操作可能会要求存储系统能够提供快速的OLAP解决方案。例如运维人员可能不具备开发环境,但会有一些简单查询或计算的需求。、表格存储Tablestore控制台提供了主键查询和多元索引查询两种方式。在已经创建了多元索引的表上,可以通过Tablestore控制台实现快速查询;在未建立多元索引的表上,则不能直接根据属性列进行查询、计算。所以,需要存储系统能够提供
467 0