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

KMP算法:高效字符串匹配秘诀

一、先解答上次的思考题问BF 算法为什么慢答每次匹配失败主串 i 要回退、模式串 j 要归零大量重复比较浪费时间。二、今天学习目标理解 KMP 核心不回退主串 i理解next 数组最长相等前后缀手写 next 数组KMP 完整代码 实战匹配三、KMP 是什么KMP 三位作者首字母解决BF 重复回溯、效率低的问题核心思想主串 i 永远不回退模式串 j 利用前后缀信息跳到合适位置继续匹配时间复杂度O(n m)四、关键最长相等前后缀next 数组例子模式串ababc前缀a, ab, aba, abab后缀c, bc, abc, babc最长相等前后缀长度2abnext[j]当模式串第 j 位失配时j 应该跳回的位置。五、next 数组代码最关键void getNext(char pat[], int next[]) { int len strlen(pat); next[0] -1; int j 0; int k -1; while (j len - 1) { if (k -1 || pat[j] pat[k]) { j; k; next[j] k; } else { k next[k]; } } }六、KMP 匹配完整代码#include stdio.h #include string.h void getNext(char pat[], int next[]) { int len strlen(pat); next[0] -1; int j 0; int k -1; while (j len - 1) { if (k -1 || pat[j] pat[k]) { j; k; next[j] k; } else { k next[k]; } } } int KMP(char str[], char pat[]) { int len_str strlen(str); int len_pat strlen(pat); int next[len_pat]; getNext(pat, next); int i 0; int j 0; while (i len_str j len_pat) { if (j -1 || str[i] pat[j]) { i; j; } else { // 只回退 ji 不动 j next[j]; } } if (j len_pat) { return i - j; } return -1; } // 测试 int main() { char str[] ababcabcac; char pat[] abcac; int pos KMP(str, pat); if (pos ! -1) { printf(匹配成功位置%d\n, pos); } else { printf(匹配失败\n); } return 0; }运行结果匹配成功位置5七、KMP 核心一句话记住BFi 回退j 归零KMPi 不回退j 跳 next八、今日小练习主串abababcabc模式串abc用 KMP 代码求匹配位置。

相关文章:

KMP算法:高效字符串匹配秘诀

一、先解答上次的思考题问:BF 算法为什么慢?答:每次匹配失败,主串 i 要回退、模式串 j 要归零,大量重复比较,浪费时间。二、今天学习目标理解 KMP 核心:不回退主串 i理解 next 数组(…...

Flowframes:5步掌握开源AI视频插帧技巧,轻松提升视频流畅度

Flowframes:5步掌握开源AI视频插帧技巧,轻松提升视频流畅度 【免费下载链接】flowframes Flowframes Windows GUI for video interpolation using DAIN (NCNN) or RIFE (CUDA/NCNN) 项目地址: https://gitcode.com/gh_mirrors/fl/flowframes 你是…...

SwitchCase语句详解:从基础到实战

一、switch case 是什么?switch case 是多条件分支语句,专门用来判断固定值的场景。比如:根据分数等级 A/B/C/D 输出评价根据菜单数字 1/2/3/4 执行不同功能根据星期 1~7 做不同处理特点:只能判断整型、字符型(不能判断…...

解放知识资产:dedao-dl让你的得到课程永久保存成为可能

解放知识资产:dedao-dl让你的得到课程永久保存成为可能 【免费下载链接】dedao-dl 得到 APP 课程下载工具,可在终端查看文章内容,可生成 PDF,音频文件,markdown 文稿,可下载电子书。 项目地址: https://g…...

想自己动手做个四足机器人?这份从电机选型到步态控制的保姆级入门指南请收好

从零搭建四足机器人:硬件选型与步态控制实战手册 当你第一次看到波士顿动力的Spot机器人完成后空翻,或是MIT Mini Cheetah在草地上灵活奔跑时,是否也萌生过自己打造一台四足机器的念头?四足机器人正从实验室走向创客空间&#xff…...

SMUDebugTool技术突破:硬件级调试能力解决工程师的系统优化痛点

SMUDebugTool技术突破:硬件级调试能力解决工程师的系统优化痛点 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: h…...

V-rep中机械臂模型的动力学特性设置与运动控制

1. V-rep机械臂动力学基础配置 第一次在V-rep里摆弄机械臂时,我被那些飘在半空的零件惊呆了——它们就像被施了魔法一样完全无视重力。后来才发现,要让机械臂"活过来",关键在于正确设置动力学特性。这个过程就像给机器人注入灵魂&a…...

从Simulink仿真到Altium Designer画板:一个直流电机调速系统的完整诞生记

从算法仿真到电路实现:直流电机双闭环调速系统全流程实战 在实验室里调试电机控制系统时,最令人兴奋的时刻莫过于看到仿真曲线和实际示波器波形完美吻合的瞬间。作为电子工程师,我们每天都在与这种"虚实结合"的挑战打交道——如何在…...

5个效率倍增方法:Kazumi播放器无缝访问与快速启动指南

5个效率倍增方法:Kazumi播放器无缝访问与快速启动指南 【免费下载链接】Kazumi 基于自定义规则的番剧采集APP,支持流媒体在线观看,支持弹幕,支持实时超分辨率。 项目地址: https://gitcode.com/gh_mirrors/ka/Kazumi 你是否…...

智鼎MAP性格测试避坑指南:如何避免‘人设崩塌’拿到高分?

智鼎MAP性格测试避坑指南:如何避免‘人设崩塌’拿到高分? 在求职过程中,性格测试往往是最容易被忽视却又至关重要的环节。智鼎MAP职业性格测试不同于传统的知识考核,它更像一面照妖镜,能够通过精心设计的题目组合&…...

全介质超构透镜模型实现偏振成像:实时分离聚焦与偏振信息解码

偏振成像 超构透镜模型 超表面 FDTD仿真 复现论文:2019年 APL Midinfrared real-time polarization imaging with all-dielectric metasurfaces 论文介绍:全介质实时偏振聚焦成像超构透镜模型,可以实现X Y RCP LCP四个偏振态的实时分离和聚焦…...

加密货币自动化交易实战指南:从策略设计到收益优化全流程

加密货币自动化交易实战指南:从策略设计到收益优化全流程 【免费下载链接】binance-trade-bot Automated cryptocurrency trading bot 项目地址: https://gitcode.com/gh_mirrors/bi/binance-trade-bot 在加密货币交易领域,自动化策略是提升效率与…...

无需联网!LongCat动物百变秀本地部署指南,动物图片编辑随心所欲

无需联网!LongCat动物百变秀本地部署指南,动物图片编辑随心所欲 1. 为什么选择本地部署的动物图片编辑器? 在数字内容创作领域,动物图片编辑一直是个特殊需求。无论是宠物博主需要制作创意内容,还是动物保护组织要制…...

YimMenu终极指南:GTA5增强工具完整使用教程

YimMenu终极指南:GTA5增强工具完整使用教程 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu Y…...

终极指南:如何用ComfyUI-MimicMotionWrapper实现AI动作迁移

终极指南:如何用ComfyUI-MimicMotionWrapper实现AI动作迁移 【免费下载链接】ComfyUI-MimicMotionWrapper 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-MimicMotionWrapper ComfyUI-MimicMotionWrapper是一款强大的AI动作迁移插件,让任…...

多模型协作测试:OpenClaw同时调用Qwen3-32B与其他轻量镜像

多模型协作测试:OpenClaw同时调用Qwen3-32B与其他轻量镜像 1. 混合模型工作流的设计初衷 去年冬天的一个深夜,我正在调试一个需要同时处理代码生成和文本摘要的自动化任务。当时我的OpenClaw配置只能串行调用单一模型,每次任务切换都需要重…...

百考通:AI赋能实践报告,让研究更顺畅

对于每一位在校学生和职场新人而言,实践报告都是记录成长、沉淀经验的关键载体,却也常常成为令人头疼的难题:要么不知如何梳理工作脉络,要么难以精准提炼收获与反思,要么在格式规范和字数要求上反复纠结。百考通&#…...

Microsoft Agent Framework 1.0 正式发布:.NET AI Agent 开发正式从 Demo 走向工程化。每一位.NET 开发者都必须关注的重大更新。

Microsoft Agent Framework 1.0 正式发布:Agent Skills 补齐后,Agent 开发真正进入工程化时代如果你最近在关注微软的 AI Agent 技术栈,这次发布值得认真看。Microsoft Agent Framework .NET 1.0.0 正式上线。这不是一次普通的版本升级&#…...

百考通:AI精准驱动数据分析,让研究更顺畅

在数字化浪潮席卷各行各业的今天,数据已成为核心生产要素,但如何从海量数据中挖掘价值、辅助决策,始终是企业与个人面临的核心难题。传统数据分析流程繁琐、技术门槛高、周期漫长,让许多非专业人士望而却步。百考通(ht…...

基于Vue的旅行社在线预定与评价系统[vue]-计算机毕业设计源码+LW文档

摘要:随着互联网技术的飞速发展和人们生活水平的提高,在线旅游预订市场呈现出蓬勃发展的态势。本文旨在设计并实现一个基于Vue的旅行社在线预定与评价系统,以满足用户便捷预订旅游产品和公平评价服务的需求,同时提升旅行社的管理效…...

终极指南:用xbmc-addons-chinese打造完美中文Kodi媒体中心

终极指南:用xbmc-addons-chinese打造完美中文Kodi媒体中心 【免费下载链接】xbmc-addons-chinese Addon scripts, plugins, and skins for XBMC Media Center. Special for chinese laguage. 项目地址: https://gitcode.com/gh_mirrors/xb/xbmc-addons-chinese …...

告别二维图纸!用管线大师3分钟搞定地下管网三维建模(附Cesium加载教程)

告别二维图纸!用管线大师3分钟搞定地下管网三维建模(附Cesium加载教程) 市政工程师老张盯着屏幕上密密麻麻的CAD线条已经三个小时了。这些代表地下管网的二维线段,在他眼里逐渐模糊成一片灰色的迷宫。"要是能直接看到立体的管…...

家庭游戏服务器搭建指南:使用Sunshine打造跨设备游戏串流体验

家庭游戏服务器搭建指南:使用Sunshine打造跨设备游戏串流体验 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 在数字化时代,游戏玩家越来越需要灵活的游戏方…...

Obsidian本地图片终极管理指南:5步打造永不失效的笔记图片库

Obsidian本地图片终极管理指南:5步打造永不失效的笔记图片库 【免费下载链接】obsidian-local-images-plus This repo is a reincarnation of obsidian-local-images plugin which main aim was downloading images in md notes to local storage. 项目地址: http…...

实战指南:从零开始构建你的Switch模拟器环境

实战指南:从零开始构建你的Switch模拟器环境 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx 还在为无法在PC上体验Switch独占游戏而烦恼吗?Ryujinx模拟器或许正…...

MaaYuan:实现游戏任务自动化的智能引擎解决方案

MaaYuan:实现游戏任务自动化的智能引擎解决方案 【免费下载链接】MaaYuan 代号鸢 / 如鸢 一键长草小助手 项目地址: https://gitcode.com/gh_mirrors/ma/MaaYuan MaaYuan作为基于MaaFramework开发的游戏自动化引擎,通过图像识别与智能任务调度技术…...

如何用eSearch神奇工具轻松搞定屏幕上的所有操作?

如何用eSearch神奇工具轻松搞定屏幕上的所有操作? 【免费下载链接】eSearch 截屏 离线OCR 搜索翻译 以图搜图 贴图 录屏 万向滚动截屏 屏幕翻译 Screenshot Offline OCR Search Translate Search for picture Paste the picture on the screen Screen recorder Omni…...

分人群AI建站工具解决方案:中小企、创业者、外贸人、创作者怎么选?

分人群AI建站工具解决方案:中小企、创业者、外贸人、创作者怎么选?同样是找“AI建站工具”,一个个体摄影师和一个初创公司老板,心里的需求清单可能完全不同。这篇内容我们就来对不同人群,分别给出适合的建站思路和工具…...

高效获取抖音无水印封面:自媒体素材批量处理指南

高效获取抖音无水印封面:自媒体素材批量处理指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖…...

夸克网盘自动化助手:告别手动操作,享受智能云存储管理

夸克网盘自动化助手:告别手动操作,享受智能云存储管理 【免费下载链接】quark_auto_save 夸克网盘签到、自动转存、命名整理、发推送提醒和刷新媒体库一条龙 项目地址: https://gitcode.com/gh_mirrors/qu/quark_auto_save 还在为每天重复检查夸克…...