随笔分类 - 算法基础:字符串匹配
摘要:字典树 字典树,又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来节约存储空间,最大限度地减少无谓的字符串比较,查询效率比哈希表高。 字典树与字典很
阅读全文
摘要:Manacher 算法:解决最长回文子串的利器
阅读全文
摘要:国庆后面两天划水,甚至想接着发出咕咕咕的叫声。咳咳咳,这些都不重要!最近学习了一下AC自动机,发现其实远没有想象中的那么难。 AC自动机的来历 我知道,很多人在第一次看到这个东西的时侯是非常兴奋的。(别问我为什么知道) 但AC自动机并不是能自动AC的程序。。。 AC自动机之所以叫AC自动机,是因为这
阅读全文
摘要:引言 一个算是冷门的算法(在竞赛上),不过其算法思想值得深究。 前置知识 kmp的算法思想,具体可以参考 → Click here trie树(字典树)。 正文 **问题定义:**给定两个字符串 S 和 T(长度分别为 n 和 m),下标从 0 开始,定义 extend[i] 等于 S[i]...S
阅读全文
摘要:背景 我们第一次接触字符串匹配,想到的肯定是直接用2个循环来遍历,这样代码虽然简单,但时间复杂度却是 ,也就是达到了字符串匹配效率的下限。于是后来人经过研究,构造出了著名的KMP算法(Knuth Morris Pratt算法),让我们的时间复杂度降低到了 ,但现代文字处理
阅读全文
摘要:Horspool 字符串匹配算法对Boyer Moore算法的简化算法。 Horspool 算法是一种基于后缀匹配的方法,是一种“跳跃式”匹配算法,具有 sub linear亚线性时间复杂度 。 Horspool 算法: 对于每个搜索窗口,该算法将 窗口内的最后一个字符 和 模式串中的最后一个字符
阅读全文
摘要:此篇文章转载自刘毅学长,部分内容按博主理解进行修改 一:背景 给定一个主串(以 S 代替)和模式串(以 P 代替),要求找出 P 在 S 中出现的位置,此即串的模式匹配问题。 Knuth-Morris-Pratt 算法(简称 KMP)是解决这一问题的常用算法之一,这个算法是由高德纳(Donald E
阅读全文
摘要:给你两个二进制字符串,返回它们的和(用二进制表示)。 输入为 非空 字符串且只包含数字 1 和 0。 示例 1: 示例 2: 提示: 每个字符串仅由字符 '0' 或 '1' 组成。 1 字符串如果不是 "0" ,就都不含前导零。
阅读全文
摘要:今天是算法数据结构专题的第3篇文章,我们一起来学习一下「Boyer-Moore算法」。 BM算法介绍 各种文本编辑器的 "查找" 功能(Ctrl+F),大多采用 Boyer-Moore 算法。 Boyer-Moore 算法不仅效率高,而且构思巧妙,容易理解。1977 年,德克萨斯大学的 Robert
阅读全文