
一、前言本文是数据结构系列的第七篇串。串属于线性结构的一种它的元素只能是字符。本篇将简要介绍其核心概念与需要掌握的重点内容所有代码均使用 C 语言实现。二、什么是串空串“”和空格串“ ”不一样比如“Hello”就是一个串长度为5三、怎么存串定长顺序存储规定只能存10个字存满就截断截断误差堆分配存储“按需买地”。用的时候new一块内存不用了就delete四、怎么找子串暴力匹配BF算法主串走一步子串跟一步。一旦不匹配主串回退到刚才开始位置的下一位子串回到开头重新开始比。缺点效率太低做了很多重复的工作KMP算法核心思想主串指针不回退利用“已匹配部分的信息”Next数组记忆表它记录匹配失败时子串应该去哪里继续比而不是傻乎乎回到开头。五、小结本章围绕串这一数据结构梳理了以下核心知识点串的基本概念串是字符的有限序列属于线性结构的一种。需要区分空串长度为 0与空格串仅含空格字符并掌握串的长度、子串、主串等基本术语。串的存储结构重点掌握定长顺序存储和堆分配存储两种方式。定长顺序存储存在截断误差问题堆分配存储则按需动态分配内存更加灵活。模式匹配算法包括暴力匹配BF 算法和 KMP 算法。BF 算法思路简单但效率低主串指针需要回退KMP 算法通过 Next 数组利用已匹配信息主串指针不回退显著提升匹配效率。