字符串:零个或多个字符组成的有限序列。

传值:单引号括起来的字符序列。(可以是字母,数字,或其他字符)

串的长度:串中字符的个数,记为n。

空串:n=0时的串。

空串与空格串的区别:空格串是由一个或多个空格组成的串,其长度为空格个数,大于或等于1;空串是无任何字符组成的串,其长度为0。

子串:串中任意个连续字符组成的子序列。

主串:包含子串的串。

求子串:sub(主串,起始位置,长度)。注:起始位置是从0开始数的。例:sub('abcdefg',1,2)='bc'而不是‘ab’

串的模式匹配(模式串在主串中的位置):从主串的起始位置起,模式串在主串中首次出现的位置序号。(注:起始位置不同,模式串在主串中的位置则不同,起始位置可以是0开始,也可以是其他位置做起始位置,是可以随意指定的)

串相等:当且仅当两个串长度相等,且对应位置相等的字符都相等。

串的抽象数据类型定义:数据对象,数据关系,数据操作。

                                        基本操作:串的赋值,串的插入,串的删除,拷贝,比较,判串是否为空,求串的长度,清除串,获取串,复制串,求子串在串中的位置序号,串置换,串消除

串和线性表的区别:串是特定结构的线性表,串只能是字符集,具有一个特定的范围,而线性表还可以是其他数据类型的集合,范围更大。

串的顺序存储结构:顺序串(定长),堆串

                                定长顺序串基本操作的实现:串插入函数,串删除函数,串复制函数,判空函数,串比较函数,求串长函数,清空函数,连接函数,求子串函数,简单模式匹配函数。

                                        串插入函数:有三种情况,设插入位置P将串分为两部分,分别为LA,LB,还有待插入部分为LC

                                                       1.插入后串长<=max length:把B向后移C个位置,再把C插入。

                                                       2.插入后串长>max length但P+C<max length:B后移时有部分字符被舍弃。

                                                       3.插入后串长>max length但P+C>max length:B的字符全部舍弃,不用后移,C插入时有部分字符被舍弃。

                                       简单模式匹配函数:从主串的某一位置开始,与模式串逐位匹配。(最长时间即时间复杂度为主串长*模式串长)

                                                                  1.初始化:主串从指定位置开始,模式串从头开始

                                                                  2.两串逐位比较:当主串、模式串均未遍历完时,对应字符作比较:若相等,主串模式串的当前比较位置均后移;若不相等:主串从开始相等的比较位置的下一个开始,模式串从头开始。

                                                                  3.判别:若匹配成功返回相等的起始位置,若匹配不成功,返回-1。

                                                                  上面说的是带回溯的模式匹配算法,可以优化成不带回溯的算法,即为KMP算法,它是模式匹配的一种改进算法,提高了处理速度,在这里不做详细解释。

                                 堆串:系统将一个地址连续、容量很大的存储空间作为字符串的可用空间。每建立新串时,需提供串值的起始位置指针和串长度,系统从堆串区分配空间。

                                           堆串的基本操作:串赋值函数,串插入函数,串删除函数,串复制函数,判空函数,串比较函数,求串长函数,清空函数,连接函数,求子串函数,模式匹配函数。

串的链式存储结构——块链串

                           单个结点称为块,包括data域和next域两个域。

                           结点大小为data域存放字符的个数。(在data域中,可以存放单一字符,也可以存放多个字符。结点大小等一1,存储密度较低,处理简单,雷同单链表;结点大小大于1,存储密度较高,管理相对复杂)

                           链域大小为next域占用字符个数。

                           块链结构是一个链表,需要头尾指针。

                           结点为1的块链串的模式匹配:主串和模式串都是链串。

                                                                        1.初始化:主串从头开始,模式串也是从头开始。

                                                                        2.两串逐位比较:当主串、模式串均未遍历完时,对应字符作比较:若相等:主串模式串的当前比较位置均后移;若不相等:主串从开始相等的比较位置的下一个位置开始,模式串从头开始。

                                                                        3.判别:若匹配成功,返回相等的起始位置的指针;若不成功,返回空指针。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值