前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >朴素的模式匹配算法

朴素的模式匹配算法

原创
作者头像
用户7737280
修改2021-11-10 16:37:02
修改2021-11-10 16:37:02
9960
举报

子串(又称模式串)的定位操作通常称做串的模式匹配,是串中最重要的操作之一。朴素的匹配方法(BRUTE FORCE 算法,BF 算法)逻辑思路:

对主串的每个字符作为子串开头,与要匹配的字符串进行匹配。

对主串做大循环,每个字符开头做要匹配子串的长度的小循环,直到匹配成功或全部遍历完成为止。

数据结构:

typedef struct{ char *str;nt max_length;int length;

}data_str_t;

代码实现:每遍比较都在最后出现不等,湖北遴选即每遍最多比较 m 次,最多比较 n-m+1 遍,总的比较次数最多为 m(n-m+1)。

int bf_index(data_str_t main_str, int start, data_str_t sub_str)

{ int i = start, j = 0, v;

while ((i < main_str.length)&&(j < sub_str.length))bf_index(data_str_t main_str, int start, data_str_t sub_st

{if(main_str.str[i] =http://lx.gongxuanwang.com/sszt/7.htm= sub_str.str[j])

时间复杂度分析

n:主串长度,m:湖北遴选要匹配子串长度。时间复杂度分析:最好情况:O(1)第一次比较就找到。 根据等概率原则,平均是(n+m)/2 次查找。最坏的情况: O(m×n) (注:(n-m+1)×m)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档