朴素字符串匹配算法
幼稚的方法测试模式P [1 …
…
. m]相对于文本T [1 …
…
n]的所有可能位置。我们依次对每个移位s尝试移位s = 0, 1 …
…
. n-m。比较T [s + 1 …
…
. s + m]与P [1 …
…
m]。
朴素算法使用一个循环来查找所有有效移位, 该循环检查n-m的每一个的条件P [1 …
…
. m] = T [s + 1 …
…
. s + m] +1可能的s值。
NAIVE-STRING-MATCHER (T, P) 1. n ← length [T] 2. m ← length [P] 3. for s ← 0 to n -m 4. do if P [1.....m] = T [s + 1....s + m] 5. then print "Pattern occurs with shift" s
分析:这个从3到5的for循环执行n-m + 1(最后至少需要m个字符)时间, 并且在迭代中我们进行了m个比较。因此, 总复杂度为O(n-m + 1)。
例:
Suppose T = 1011101110P = 111Find all the Valid Shift
【朴素字符串匹配算法】解:
文章图片
文章图片
文章图片
文章图片
推荐阅读
- 字符串匹配介绍
- 图论(最大二分匹配)
- xp系统视频画面与声音不匹配如何处理
- 茴香豆的“茴”有四种写法,Python的格式化字符串也有
- 移位减少解析
- C++字符串用法
- C++ int转换为字符串
- 字符串的应用-2
- 如何在Pandas DataFrame中将字符串转换为浮点数()
- c语言字|c语言字 字符串转换成数组_编程C语言进阶篇——构造类型(数组)