数据结构之串

定义

串String:由零个或多个字符组成的有限序列,又名叫字符串

  • 串中字符数目n称为串的长度,有限是指n为一个有限数值
  • 零个字符的串称为空串(null String)长度为0,序列是指串的相邻字符之间具有前驱和后继的关系
  • 空格串:只包含空格的串,
    注意空格串与空串之间的区别:空格串是有长度的,可以为多个空格,空串长度为0
  • 子串与主串:串中任意个数的连续字符组成的子序列称为该串的子串,包含子串的串称为主串
  • 子串的位置:就是子串的第一个字符在主串中的序号

串的比较

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

ASCII是American Standard Code for Information Interchange缩写
常用字符标准ASCII编码由7位二进制数表示一个字符,共表示128个字符,不够用
扩展ASCII码是由8位二进制数表示一个字符,总共可以表示256个字符
Unicode编码:由16位二进制数表示一个字符,可以表示65536个字符,其前256位与ASCII码完全一致


判断两个串是否相等,判断长度相等,对应位置的 字符相等。


2的8次方是16*16=256
2的16次方是256*256=65536
2的32次方是65536*65536=4294967296
65~90为26个大写英文字母97~122号为26个小写英文字母

串的抽象数据类型

串的逻辑结构与线性表很相似,不过串针对的是字符集操作,也就是串中的元素都是字符

  • 线性表更关注的是单个元素的操作,如删除,插入,查找一个元素
  • 串更多的是查找子串的 位置,替换子串,得到指定位置的子串等

串的存储结构

串的存储结构与线性表相同:分为顺序存储结构、链式存储结构

顺序存储结构:是指用一组地址连续的存储单元来存储串中字符序列,一般用定长数组来定义存储区。
串值的存储空间可在程序执行过程中动态分配而得,堆,新new String,则在堆中开辟新空间


串的链式存储结构:串的结构中每个元素都是一个字符,如果一个节点对应一个字符,会造成很大空间浪费,所以存储时要考虑一个节点放一个还是多个字符,最后一个节点若是没被沾满,可以用“#”等其他非串数值字符补全。


串的链式存储结构除了在连接串上操作方便,总体不如顺序存储灵活,性能不如顺序存储结构。

模式匹配算法

  1. 暴力匹配,从头开始一个一个匹配,不成功,从主串的第二位开始从头开始匹配模式串,直到得出结果或返回-1
  2. KMP模式匹配算法:todo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值