• 忘掉天地
  • 仿佛也想不起自己
bingliaolongBingliaolong  2020-10-14 10:11 Aet 隐藏边栏 |   抢沙发  0 
文章评分 0 次,平均分 0.0

字符串匹配

字符串匹配的形式化定义如下:假设文本是一个长度为n的数组 T[1...n],而模式是一个长度为m的数组P[1...m],其中m<=n。进一步假设PT的元素都是来自一个有限字母集合M的字符。如M={0,1}或者M={a,b,c,...z}
字符数组PT通常称为字符串。

朴素字符串匹配算法

原理

朴素字符串匹配算法是通过一个循环找到所有的有效偏移,该循环对n-m+1各可能的偏移值s进行检查,看是否满足条件 P[1...m]=T[s+1,...s+m]

步骤

  • 对T,遍历其从0~n-m 的位置,在每一个位置上比较
  • 比较时,设当前偏移为s,则比较 T[s+1,s+2,...s+m]P[1...m]。当二者每一个字符都相等时,则匹配
  • 将找到的有效偏移存入std::vector中然后返回

性能

朴素字符串匹配算法的时间复杂度 O(m*n)

实现

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

bingliaolong
Bingliaolong 关注:0    粉丝:0 最后编辑于:2021-11-20
Everything will be better.

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享