1. 单模式串匹配
    BF 算法和 RK 算法
    BM 算法和 KMP 算法
  2. 多模式串匹配算法
    Trie 树和 AC 自动机

一、单模式串匹配:

  1. BF: 简单场景,主串和模式串都不太长, O(m*n)
  2. KP:字符集范围不要太大且模式串不要太长, 否则hash值可能冲突,O(n)
  3. naive-BM:模式串最好不要太长(因为预处理较重),比如IDE编辑器里的查找场景,命令grep; 预处理O(m*m), 匹配O(n), 实现较复杂,需要较多额外空间.
  4. KMP:适合所有场景,整体实现起来也比BM简单,O(n+m),仅需一个next数组的O(n)额外空间;但统计意义下似乎BM更快,原因不明.

二、多模式串匹配:

  1. naive-Trie: 适合多模式串公共前缀较多的匹配(O(n*k)) 或者 根据公共前缀进行查找(O(k))的场景,比如搜索框的自动补全提示.
  2. AC自动机: 敏感词匹配 适合大量文本中多模式串的精确匹配查找, 可以到O(n).

【数据结构与算法】【应用】字符串匹配相关推荐

  1. 【数据结构与算法】字符串匹配 BF算法 RK算法

    单模式串匹配 BF 算法和 RK 算法 BM 算法和 KMP 算法 多模式串匹配算法 Trie 树和 AC 自动机 一.BF 算法 1,BF算法是Brute Force的缩写,中文译作暴力匹配算法,也 ...

  2. 【数据结构与算法】字符串匹配 AC自动机

    单模式串匹配 BF 算法和 RK 算法 BM 算法和 KMP 算法 多模式串匹配算法 Trie 树和 AC 自动机 AC 自动机 AC 自动机实际上就是在 Trie 树之上,加了类似 KMP 的 ne ...

  3. 【数据结构与算法】字符串匹配 KMP 算法

    单模式串匹配 BF 算法和 RK 算法 BM 算法和 KMP 算法 多模式串匹配算法 Trie 树和 AC 自动机 KMP 算法 KMP 算法是根据三位作者(D.E.Knuth,J.H.Morris ...

  4. 【数据结构与算法】字符串匹配 BM算法

    单模式串匹配 BF 算法和 RK 算法 BM 算法和 KMP 算法 多模式串匹配算法 Trie 树和 AC 自动机 BM算法 BM算法的核心思想是通过将模式串沿着主串大踏步的向后滑动,从而大大减少比较 ...

  5. 数据结构与算法之字符凭拼接最低字典序和数据流中取中位数

    数据结构与算法之字符凭拼接最低字典序和数据流中取中位数 目录 字符凭拼接最低字典序 数据流中取中位数 1. 字符凭拼接最低字典序 题目描述 思路: 创建一个比较器,比较的内容是(o1+o2).comp ...

  6. java 蓝桥杯算法提高 字符串匹配(题解)

    试题 算法提高 字符串匹配 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行.你的程序还需支持大小写敏感选项:当选项打开时 ...

  7. 【C#】KPM算法解决字符串匹配问题

    KPM算法解决字符串匹配问题 什么是KPM算法 步骤 Ⅰ根据<最大长度表>部分匹配表(next) 寻找最长前缀后缀 Ⅱ 根据 部分匹配表 进行匹配 代码实现 什么是KPM算法   Knut ...

  8. 算法五——字符串匹配(中)

    文章出处:极客时间<数据结构和算法之美>-作者:王争.该系列文章是本人的学习笔记. 1文本编辑器中的查找功能怎么实现 在word中有一个功能:查找某个字符串,将其替换为另一个字符串,就会用 ...

  9. 算法五——字符串匹配(上)

    文章内容.图片均来自极客时间. 如何借助哈希算法实现高效字符串匹配 1 概念和用途 字符串匹配:查找一个字符串A在字符串B中是否出现,这个过程就是字符串匹配.A称为模式串,B称为主串.主串的长度记为n ...

  10. KMP算法,字符串匹配,next与nextval数组求解

    目录 KMP算法简介 next数组手动求解过程 next数组求解(代码实现) 改进的KMP算法 手动求解nextval数组 nextval数组求解(代码实现) KMP算法简介 KMP算法是一种改进的字 ...

最新文章

  1. android shape.xml 文件使用
  2. 机器学习-常见的损失函数比较
  3. Java在一个文件中匹配字符串
  4. LiveVideoStack线上分享第四季(五):基于Airflow的视频编码平台
  5. ASP.NET Core 数据加解密的一些坑
  6. Oracle中关于计算时间差的例子:
  7. CAS的三个问题及解决方案
  8. OSError: [Errno 22] Invalid argument: ‘\u202aC:\\Windows\\Fonts\\方正粗黑宋简体.ttf‘解决方案
  9. 对Go 1.16 io/fs设计的第一感觉:得劲儿!
  10. 2017年网站建设公司现状分析
  11. matlab飞机飞行模型,使用 MATLAB/Simulink 设计无人机飞行控制系统(二、动力学模型建立)...
  12. 微信公众号实现消息模板的推送
  13. 7-5 换硬币 (20 分)
  14. php实现秒数倒计时,jQuery网页倒计时代码 显示天、小时、分钟与秒数
  15. HTML5利用canvas绘制太极图案
  16. 【游戏客户端】制作节奏大师Like音游(上)
  17. MAC系统安装JDK和环境变量配置
  18. python中tensorflow_Python Tensor FLow简单使用方法实例详解
  19. linux课件完整汇总
  20. K8S中的cordon、uncordon和drain node标签 节点标签

热门文章

  1. bootstrap API地址
  2. xml学习总结(三)
  3. 设计模式_第二篇_策略模式
  4. linux部署jenkins,tomcat9
  5. html检查输入为空,html input输入验证不为空
  6. XP操作系统最优视觉效果
  7. dw替换多个html标签,DW查找替换的技巧
  8. (Java)Character类
  9. 封装(构造方法,构造器)
  10. 数据库笔记(数据库操作)