线性关系-字符串

字符串就是0或多个字符组成的有序序列,

1.字符串的顺序存储结构:

本质上还是顺序表的实现,连续的存储单元,一组连续的数组来存储串张的字符序列‘
一般有三种方法表示字符串的长度
1.初始化数组后,长度为maxsize;
前maxsize -1 位定义数组,最后一位存储单元,定义字符串的长度;
2.在字符串尾部,存储一个不会在串中出现的特殊字符,来作为字符串的终结构,例如,c里面用\0,来表示字符串尾部;以\0的位置求得字符串的长度
3.以数组的第一位存储单元,存储字符串的长度;
三种存储结构,一般是第三种 了;

2.字符串的模式匹配,

目的是为了判断两个串是否包含的算法,也叫做精确匹配,存储结构是1.3;
1.模式匹配算法,也叫BF算法;
主要思想就是:从主串S的第一个字符开始和字串T的第一个字符开始比较,若相等,则继续比较二者的后续字符;
否则,从主串的第二个字符开始和字串T的第二个字符进行比较;
重复这个过程,直至S或者T中的所有字串比较完毕,若T的所有字符都比较完毕,则匹配成功,返回本趟匹配的开始位置;否则陪陪失败,返回0;

伪代码:
1.在串s和串T中设置比较的起始下标i和j
2.重复下述操作,直到s或者T的所有字符比较完毕;
2.1 如果s[i]=T[j],继续比较s和T的下一堆字符;
2.2 否则,将下表I和j回溯,准备下一趟比较
3.如果T中素所有字符比较完,则匹配成功,返回匹配的开始位置;
否则匹配失败,返回0;

2.改进版KMP算法;
bf有个缺点,效率低,每次S串必须一位位往后,
例如,第一次匹配从0,开始,和T已经匹配三个字符成功了,第四个字符失败了,bf算法,将会从S串第二位开始,重新开始和T匹配’;

KMp,优化处就是,第四个字符失败了,那就从S串第四位开始,和T串重新开始比较(基本思想就是主串不进行回溯);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值