字符串算法—正则表达式
摘要:1. 前文回顾 在字符串算法—字符串搜索中,我们实现了从一堆字符中搜索某个字符串的高效算法。 但如果要在一堆字符中找具有某些规律的字符串(要找的字符串是不确定的,但有规律),该如何设计算法? 本文将介绍NFA算法来解决此问题。 2. 正则表达式 首先,有规律的字符串是长什么样的呢?例如:ABBBBB
阅读全文
字符串算法—字符串搜索
摘要:1. 前文回顾 在字符串算法—字典树(Tries)中,我们实现了在一堆字符串中寻找某个字符串的高效算法。但如果要从一段字符中,寻找某个字符串呢? 我们可以用字符串算法—字符串排序(下篇)中的后缀排序法(suffix arrays)来寻找关键词,但它消耗的内存有点大(毕竟要建一个超大的数组)。 为了解
阅读全文
字符串算法—字典树
摘要:本文将介绍字符串的查找算法:R-way tries和ternary search tries(TST)。 1. 前文回顾 在字符串算法—字符串排序(上篇)和字符串算法—字符串排序(下篇)中,我们介绍了字符串的排序方法。 但如果我们只想进行字符串的查找工作而不想排序呢? 提到查找,我们自然而然地就想起
阅读全文
字符串算法—字符串排序(下篇)
摘要:本文将介绍3区基数快速排序、后缀排序法。 1. 前文回顾 在字符串算法—字符串排序(上篇)中,我们介绍了键索引计数法、LSD基数排序、MSD基数排序。 但LSD基数排序要求需排序字符串的长度一致;MSD基数排序虽然对字符串的长度没要求,但其递归循环里的每次循环都需要进行很多操作,且需要额外的空间。
阅读全文
字符串算法—字符串排序(上篇)
摘要:本文将介绍键索引计数法、LSD基数排序、MSD基数排序。 1. 字符串(String) 我们来简单回顾一下字符串。 众所周知,字符串是编程语言中表示文本的数据类型。它是一堆字符的组合,如 String S="String"。 我们可以知道字符串的长度:S.length()=6; 可以知道某个位置的字
阅读全文
图表算法—最短路径
摘要:1. 什么是最短路径(Shortest Path) 对于一个有向图(不了解有向图的,建议先看一下有向图),如果它的所有边都带有一定的数值(即带权),则会变成下面的样子 如果我们在点5,想去点6,应该怎么走最快?显然5-2-6这条路最短。这就是点5到点6的最短路径。 给定一个点,求这个点到所有其它点的
阅读全文