朴素字符串匹配算法2025 年 3 月 17 日 | 阅读 1 分钟 朴素方法测试模式P [1.......m]相对于文本T [1......n]的所有可能位置。 我们尝试平移量 s = 0, 1.......n-m,依次进行,并且对于每个平移量 s,比较 T [s+1.......s+m] 与 P [1......m]。 朴素算法使用一个循环查找所有有效的平移量,该循环检查每个可能的 s 值 (n - m +1) 的条件 P [1.......m] = T [s+1.......s+m]。 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)。 示例解决方案 ![]() ![]() ![]() ![]() 下一个主题Rabin-Karp算法 |
我们请求您订阅我们的新闻通讯以获取最新更新。