当前位置: 首页 > news >正文

数据结构复习4

第四章 串

一些面试题

12. 介绍一下KMP算法。★★★

       KMP算法是一种高效的字符串匹配算法,用于在一个文本串中查找一个模式串的出现位置。KMP算法通过利用模式串自身的信息,在匹配过程中避免不必要的回溯,从而提高匹配效率。

       KMP算法的核心思想是使用一个部分匹配表,也称为next数组,来记录模式串中每个位置的最长公共前后缀的长度。这样,在匹配失败时,可以根据部分匹配表的信息,将模式串向右移动尽可能少的步数。

       KMP算法的时间复杂度O(n+m),朴素算法的时间复杂度O(n*m),n和m是两个串的长度。

-------------------------------------------------------------------------------------------------------------------------

       KMP算法的具体步骤如下:

预处理next数组:对于模式串,遍历每个位置,计算该位置之前子串的最长公共前后缀的长度,并保存到next数组中。
匹配过程:从文本串的起始位置开始,用两个指针分别指向文本串和模式串的当前位置,逐个字符进行比较。
       如果当前字符匹配成功,则两个指针同时向后移动一位。

       如果当前字符匹配失败:

       根据next数组中的信息,将模式串向右移动尽可能少的步数。根据当前失败位置的部分匹配值,向右移动模式串的指针。

       同时,保持文本串的指针不动,继续与模式串的新位置进行比较。

       如果模式串的指针移到末尾,则表示匹配成功,返回在文本串中的起始位置。如果文本串的指针移到末尾,则表示未找到匹配,返回-1。

--------------------------------------------------------------------------------------------------------------------------

KMP算法简述

KMP算法是在简单模式匹配的基础上对串的模式匹配进行优化。

主要的思路是每趟比较过程中让子串先滑动到一个合适的位置。

当发生不匹配时,不同于简单模式匹配的右移一位,而是移动到适合的位置。

这里所移动的位置依靠与NEXT[]数组,求next[]数组的方法是比较前后缀相同元素。

计算机保研/考研面试题——数据结构与算法篇_计算机保研面试 csdn-CSDN博客

面试考点——数据结构篇_数据结构保研面试重点-CSDN博客

http://www.lryc.cn/news/576940.html

相关文章:

  • stm32之测量周期
  • GPT,GPT-2,GPT-3 论文精读笔记
  • 各种常用的串口助手工具分享
  • vue-30(理解 Nuxt.js 目录结构)
  • Java 大视界 -- 基于 Java 的大数据分布式存储在科研大数据归档与长期保存中的应用(328)
  • TCP/UDP协议深度解析(三):TCP流量控制的魔法—滑动窗口、拥塞控制与ACK的智慧
  • 【AGI】Qwen VLo:多模态AI的范式重构与AGI演进关键里程碑
  • 数据可视化 - 单子图
  • LeetCode 第80题 删除有序数组中的重复项Ⅱ
  • 【如何实现分布式压测中间件】
  • Conda 环境配置之 -- Mamba安装(causal-conv1d、mamba_ssm 最简单配置方法)-- 不需要重新配置CDUA
  • MCPA2APPT 智能化演示文稿系统:A2A、MCP、ADK 三大架构全流程自动化
  • stm32之普通定时器
  • 左神算法之Zigzag方式打印矩阵
  • 飞云翻倍布林(翻倍密码系统四线布林版)双安全系统+均价趋势指标+日线周线MACD,组合操盘技术图文分享
  • H3C-路由器DHCPV6V4配置标准
  • 群晖nas安装moodle跳坑记录
  • 【更新至2024年】1996-2024年各省农村居民人均消费支出数据(无缺失)
  • 第十二节:Vben Admin 最新 v5.0 (vben5) 快速入门 - 两种权限控制方式(附前后端代码)
  • 对象的finalization机制Test
  • 智慧水务:未来城市水务管理的创新实践与科技飞跃
  • 【科技核心期刊推荐】《计算机与现代化》
  • 学习使用dotnet-dump工具分析.net内存转储文件(3)
  • Java 数据结构 泛型
  • ListExtension 扩展方法增加 转DataTable()方法
  • 常用指令合集(DOS/Linux/git/Maven等)
  • BP-Tools21.02下载 加解密利器 金融安全交易算法工具 PCI认证工具 金融和智能卡的数据加解密和数据转换工具
  • RabbitMQ中,basicAck、basicNack和basicReject是三种核心的消息确认机制
  • 左神算法之矩阵旋转90度
  • 浮油 - 3 相分层和自由表面流 CFX 模拟