子串(又称模式串)的定位操作通常称做串的模式匹配,是串中最重要的操作之一。朴素的匹配方法(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 删除。