大话数据结构--初始串

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

前言


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


五、串


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

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



相关文章
|
19天前
|
设计模式 算法 Java
【数据结构和算法】最大连续1的个数 III
这是力扣的 1004 题,难度为中等,解题方案有很多种,本文讲解我认为最奇妙的一种。又是一道滑动窗口的典型例题,可以帮助我们巩固滑动窗口算法。这道题很活灵活现,需要加深对题意的变相理解。给定一个二进制数组nums和一个整数k,如果可以翻转最多k个0,则返回数组中连续1的最大个数。
69 2
|
19天前
|
存储
数据结构---串(赋值,求子串,比较,定位)
数据结构---串(赋值,求子串,比较,定位)
21 4
数据结构---串(赋值,求子串,比较,定位)
|
10月前
数据结构-前缀数
数据结构-前缀数
|
19天前
|
存储 设计模式 算法
【数据结构和算法】找出两数组的不同
这是力扣的 2215 题,难度为简单,解题方案有很多种,本文讲解我认为最奇妙的一种。给你两个下标从0开始的整数数组nums1和nums2,请你返回一个长度为2的列表answer,其中: answer[0]是nums1中所有不存在于nums2中的不同整数组成的列表。 answer[1]是nums2中所有不存在于nums1中的不同整数组成的列表。 注意:列表中的整数可以按任意顺序返回。
53 1
|
11月前
|
存储 算法 C语言
数据结构-串
数据结构-串
|
存储 算法
【数据结构】串的定义以及算法
【数据结构】串的定义以及算法
88 0
|
算法
大话数据结构--串的匹配算法
大话数据结构--串的匹配算法
80 0
|
机器学习/深度学习
大话数据结构--初始二叉树
大话数据结构--初始二叉树
33 0
|
机器学习/深度学习 数据库管理
大话数据结构--初始树
大话数据结构--初始树
50 0
|
存储
大话数据结构--初始栈
大话数据结构--初始栈
56 0