数据结构(4.2)——朴素模式匹配算法
创始人
2025-01-08 09:32:11
0次

字符串模式匹配

在主串中找到模式串相同的子串,并返回其所在的位置。

子串和模式串的区别 

子串:主串的一部分,一定存在

模式串:不一定能在主串中找到

字符串模式匹配

朴素模式匹配算法 

主串长度为n,模式串长度为m

朴素模式匹配算法:将主串中所有长度为m的子串(最多对比n-m+1个子串)依次与模式串对比,直到找到一个完全匹配的子串,或所有的子串都不匹配为止

 index定位操作就是使用朴素模式匹配算法实现的

使用数组下标匹配

// 函数Index:在主串S中查找子串T的位置 // 返回值:如果找到子串,返回子串在主串中的位置(从1开始计数) //         如果没有找到,返回0 int Index(SString S, SString T) {     int i = 1, j = 1;     while (i <= S.length && j <= T.length) {         if (S.ch[i] == T.ch[j]) {             ++i; ++j; // 如果当前字符匹配,继续比较下一个字符         } else {             i = i - j + 2; // i回退到下一个可能的子串的起始位置             j = 1; // j重置为1,重新开始匹配         }     }     if (j > T.length)         return i - T.length; // 如果找到子串,返回子串在主串中的位置     else         return 0; // 如果没有找到子串,返回0 } 

设主串长度为n,模式串长度为m,则最坏时间复杂度=O(nm)

最坏的情况,每个子串都要对比m个字符,共n-m+1个子串,复杂度=O((n-m+1)m)=O(nm) 

注:很多时候,n>>m

总结

相关内容

热门资讯

一分钟了解开挂工具!aapok... 一分钟了解开挂工具!aapoker辅助功能开透视工具,一直真的是有挂(揭秘有挂)一分钟了解开挂工具!...
一起来讨论开挂!八戒大厅辅助透... 一起来讨论开挂!八戒大厅辅助透视挂,天天酒都存在有外挂,本来今日头条1.八戒大厅 选牌创建新账号,点...
专业讨论开挂工具!德普之星辅助... 专业讨论开挂工具!德普之星辅助功能开透视工具,一直有挂(真实有挂)1、玩家可以在德普之星透视最简单三...
揭秘真相开挂!友友麻将辅助透视... 揭秘真相开挂!友友麻将辅助透视挂,顺欣茶楼是有外挂,果然有挂技术1、用户打开应用后不用登录就可以直接...
出现新变化辅助!越乡游义乌麻将... 出现新变化辅助!越乡游义乌麻将辅助透视挂,雀友会潮汕麻将真的是有外挂,确实有挂功能1、点击下载安装,...
盘点几款开挂插件!微扑克辅助功... 盘点几款开挂插件!微扑克辅助功能开透视工具,原来是有挂(存在有挂)暗藏猫腻,小编详细说明微扑克破解器...
最终开挂!洛阳杠兹辅助透视挂,... 最终开挂!洛阳杠兹辅助透视挂,边锋老友内蒙古麻将是有外挂,一直有挂教程小薇(辅助器软件下载)致您一封...
今日公布透视挂攻略!智星德州扑... 今日公布透视挂攻略!智星德州扑克辅助功能开透视工具,一直有挂(确实有挂)1、进入到智星德州扑克是否有...
此事引发广泛关注开挂!非凡娱乐... 此事引发广泛关注开挂!非凡娱乐辅助透视挂,凑一桌游戏确实有外挂,好像有挂实锤凑一桌游戏破解侠是真的助...
三分钟了解开挂脚本!wepok... 三分钟了解开挂脚本!wepoker辅助功能开透视工具,一直是有挂(有挂辅助)1、wepoker模拟器...