数据结构(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

总结

相关内容

热门资讯

热门推荐“川娱竞技血战辅助器”... 热门推荐“川娱竞技血战辅助器”wepoker辅助是真的吗(带开挂辅助插件AI教程);无需打开直接搜索...
教程辅助“同城510k修改”有... 教程辅助“同城510k修改”有挂方法开挂辅助下载安装教程;无需打开直接搜索加(薇:136704302...
透视能赢“雀神广东定制插件辅助... 较多好评“微乐万能挂官网”开挂(透视)辅助教程 了解更多开挂安装加(136704302)微信号是一款...
教程辅助“白金岛怎么开透视”有... 教程辅助“白金岛怎么开透视”有挂教程开挂辅助工具安装教程;打开点击测试直接进入微信(13670430...
透视真的“海洋麻将辅助器”we... 透视真的“海洋麻将辅助器”wepoker轻量版透视系统(带开挂辅助软件存在挂教程);无需打开直接搜索...
教程辅助“福建天天开心辅助”有... 您好:福建天天开心辅助这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌...
透视软件“圣盛鄂州晃晃辅助”w... 圣盛鄂州晃晃辅助是一款专注玩家量身打造的游戏记牌类型软件,在圣盛鄂州晃晃辅助这款游戏中我们可以记录下...
教程辅助“518互游辅助”有挂... 较多好评“微乐万能挂官网”开挂(透视)辅助教程 了解更多开挂安装加(136704302)微信号是一款...
三分钟了解“微信小程序家乡大贰... 微信小程序家乡大贰辅助器开挂教程视频分享装挂详细步骤在当今的网络游戏中,微信小程序家乡大贰辅助器作为...
教程辅助“aapoker脚本”... 【亲,aapoker脚本 这款游戏可以开挂的,确实是有挂的,很多玩家在这款aapoker脚本中打牌都...