算法
文章平均质量分 89
行云_
这个作者很懒,什么都没留下…
展开
-
一个简单的正则表达式匹配器
下面的代码实现如下语法原创 2014-08-28 11:18:38 · 1181 阅读 · 0 评论 -
字典树(Tries)
概念Tries树,又称键树,字典树或查找树。用来存储字符串的一种树形结构。它有三个基本性质:1 根节点不包含字符,除根节点外每一个节点都只包含一个字符。2 从根节点到某个一个节点,路径上经过的字符连接起来,为该节点对应的字符串。3 每个节点的子节点包含的字符都不相同。假设,我们有这些单词,hello, he, she, abc, aha, ok, abcd,对其构造字典原创 2014-03-18 00:11:59 · 4948 阅读 · 1 评论 -
后缀树
后缀树是一种树型数据结构,使用后缀树可以快速解决很多字符串相关的问题,功能非常强大。很多文章在说到后缀树时,都会首先提及Tries树。实际上Tries是一种简单版本的后缀树,后缀树也可以说是压缩后的Tries树。总而言之,Tries树和后缀树有很多相似之处,后缀树在时间效率和空间效率都比Tries树要好,不过后缀树相应的就很难理解。很多介绍后缀树的文章都难免让初学者陷入混乱。原创 2014-04-01 23:41:47 · 2913 阅读 · 1 评论 -
一些校招笔试题
有一堆硬币,初始状态未知。现在假设有一个机器人,不停的做如下处理:对每一个硬币,如果是反面,就把它翻为正面,如果正面就把它随机抛一下。问:经过无数遍这样的处理后,这一堆硬币的状态能稳定下来吗?如果能,正面的硬币和反面的硬币最终比例是多少?[美团:2013]假设初始状态为:正面a枚,反面b枚。正面数量反面数量第1次a/2+ba/2原创 2013-09-15 11:19:10 · 996 阅读 · 0 评论 -
KMP算法 - 深入浅出
在朴素算法中,移动模式串后,就会丢掉之前已匹配符号的信息。所以,很可能一个文本符号会与不同的模式符号进行多次比较。这导致了最坏时间复杂度O(nm)(n:文本长度,m: 模式长度)。KMP算法利用之前的符号比较信息。该算法不会对已经与某个模式符号匹配的文本符号进行重复比较。所以KMP的时间复杂度是O(n)。然而,需要对模式串进行预处理以分析它的结构。预处理阶段的时间复杂度是O(m)。因为m<=n,所以总的时间复杂度是O(n)。翻译 2013-09-12 16:05:06 · 1031 阅读 · 0 评论 -
生成随机文本
如何生成随机文本?直观的方法是,以等概率的方式随机的选择每一个字母和空格,当然这样生成的文本好无意义。类似于这样:vLtcNoXSseBeQHvTalbSbqVzFfLnaczP UrNImTyRnnMtQmZkATgEdLJP LYCsWnJavHDTMoqAAPxkmSuTgPPEdZBIOAzYPebkXw如何生成令人感兴趣的文本呢?原理是这样的:多数事件发生在上下文。比如今天的原创 2013-08-18 10:32:36 · 2782 阅读 · 0 评论 -
区间重合判断
l 方法一1 对N个无序的目标区间进行排序2 顺序判断源区间是否在目标区间内bool isOverlap([x, y], [x1, y1][x2,y2]...[xn,yn]){ //以x为key进行升序排序,排序后x123n sort([x1,y1][x2,y2]...[xn,yn]); flg=0;原创 2013-05-23 13:46:59 · 1343 阅读 · 0 评论