字符串专项(三):字符串匹配(KMP算法+BF算法)
大家好,欢迎来到《算法面试60讲(2026最新版·全真题带解析)》的第18篇内容!在上一篇中,我们攻克了回文串相关的两大热题——回文串判断和最长回文子串,掌握了双指针、中心扩展、动态规划等核心技巧,也了解到回文串是字符串综合应用的基础。按照上一篇的预告,本节课我们将进入字符串专项的进阶热题模块,聚焦面试高频难点——字符串匹配,重点讲解两种经典算法:BF算法(暴力匹配,基础必掌握)和KMP算法(高效匹配,社招必考)。字符串匹配是算法面试中的“高频核心考点”,贯穿校招和社招,无论是基础的暴力匹配,还是进阶的KMP算法,都是面试官考察的重点。其核心场景是:给定主串(文本串)T和模式串P,判断模式串P是否是主串T的子串,若存在,返回P在T中首次出现的起始索引;若不存在,返回-1。看似简单的场景,却能很好地考察候选人的算法思维、代码严谨性和优化能力——BF算法易写但效率低,KMP算法难理解但效率高,两者的对比、原理推导和代码实现,是面试中常考的核心内容。核心重点:BF算法的原理、实现及弊端,KMP算法的核心思想(前缀函数、next数组)、完整实现,两种算法的时间/空间复杂度对比,以及面试高频追问和避坑要点。本节课将以“原理拆解+代码实现+真题应用+面试延伸”为核心,从基础到进阶,帮你彻底掌握字符串匹配的两大核心算法,轻松应对面试中的相关考题。一、前置基础:字符串匹配核心场景与定义(面试必知)在讲解具体算法之前,我们先明确字符串匹配的核心定义和常见场景,这是理解两种算法的前提,也是面试中面试官常追问的基础知识点,避免因概念混淆导致解题偏差。核心定义:主串(文本串)T:长度为n的字符串,是我们要搜索的目