☰
【计算机408】数据结构 | 串
2026/10/8 2:07:58 网站建设 项目流程

一、前言

本文是数据结构系列的第七篇:串。串属于线性结构的一种,它的元素只能是字符。本篇将简要介绍其核心概念与需要掌握的重点内容,所有代码均使用 C++ 语言实现。


二、什么是串?

空串“”和空格串“ ”不一样!比如“Hello”就是一个串,长度为5


三、怎么存串?

定长顺序存储:规定只能存10个字,存满就截断(截断误差)

堆分配存储:“按需买地”。用的时候new一块内存,不用了就delete


四、怎么找子串?

暴力匹配(BF算法):

主串走一步,子串跟一步。一旦不匹配,主串回退到刚才开始位置的下一位,子串回到开头,重新开始比。

缺点:效率太低,做了很多重复的工作

KMP算法:

核心思想:主串指针不回退,利用“已匹配部分的信息”

Next数组(记忆表):它记录匹配失败时,子串应该去哪里继续比,而不是傻乎乎回到开头。


五、小结

本章围绕串这一数据结构,梳理了以下核心知识点:

  • 串的基本概念:串是字符的有限序列,属于线性结构的一种。需要区分空串(长度为 0)与空格串(仅含空格字符),并掌握串的长度、子串、主串等基本术语。
  • 串的存储结构:重点掌握定长顺序存储和堆分配存储两种方式。定长顺序存储存在截断误差问题,堆分配存储则按需动态分配内存,更加灵活。
  • 模式匹配算法:包括暴力匹配(BF 算法)和 KMP 算法。BF 算法思路简单但效率低,主串指针需要回退;KMP 算法通过 Next 数组利用已匹配信息,主串指针不回退,显著提升匹配效率。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询