ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数据结构--串

2021-10-23 23:02:15  阅读:149  来源: 互联网

标签:子串 字符 存储 匹配 主串 -- 算法 数据结构


文章目录


前言


提示:以下是本篇文章正文内容

一、串的定义

串(string)是由零个或多个字符组成的有限序列

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

主串:包含子串的串

空串:0个字符的串

子串的位置子串的第一个字符在主串中的序号

S = "abcd123"
T1 = "abcd"
T2 = "abcd124"
T1是S的子串,T2不是S的子串,T1位置在S中为0

二、串的存储

1.顺序存储结构

串的顺序存储结构是用一组地址连续的存储单元来存储串中的字符序列的
在这里插入图片描述

2.链式存储结构

对应串的链式存储结构,与线性表是相似的,但是由于串的结构的特殊性,结构中的每个元素数据是一个字符,就会存在很大的浪费空间。

因此,一个结点可以存储多个字符,若最后一个结点没有被占满,可以用"#"或者其他非串值字符代替补全


三、模式匹配

模式匹配:给定主串S= "s1s2s3…sn"和模式串T= “t1t2t3…tn”,在S中寻找T的过程称为模式匹配。如果匹配成功,返回T在S中的位置;如果匹配失败,返回-1。

1.BF(Brute Force)算法

BF算法,即暴力(Brute Force)算法

基本思想:从主串S的第一个字符开始和模式串T的第一个字符进行比较,若相等,则继续比较两者的后续字符;否则,从主串S的第二个字符开始和模式T的第一个字符进行比较,重复上述的过程,直到T中的字符全部比较完毕,则说明本趟匹配成功;或者S中的字符全部比较完,则说明匹配失败。

在这里插入图片描述
当模式串T与主串S匹配不成功时,主串S和模式串T要进行回溯,模式串T中 j=0主串S中i=i-j+1

2.KMP算法

BF算法时间性能比较低,因为在每趟匹配不成功时存在大量的回溯,没有利用已经部分匹配的结果,在匹配不成功时主串不进行回溯,模式串需要向右滑动一段距离----KMP算法,可以大大避免重复遍历的情况。

3.next数组

总结

提示:这里对文章进行总结:

标签:子串,字符,存储,匹配,主串,--,算法,数据结构
来源: https://blog.csdn.net/qq_53144843/article/details/120927144

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有