程序员必知算法
DreamMakers
凡办大事,以识为主,以才为辅,凡成大事,人谋居半,天意居半。
展开
-
程序员必知算法----KMP算法系列(2)
转载自:http://www.cnblogs.com/dolphin0520/archive/2011/08/24/2151846.html在介绍KMP算法之前,先介绍一下BF算法。一.BF算法 BF算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串P的第一个字符进行匹配,若相等,则继续比较S的第二个字符和P的第二个字符;若不相等,则比较S的第转载 2013-07-09 22:06:18 · 799 阅读 · 0 评论 -
程序员必知算法----KMP算法系列(1)
KMP算法是拿来处理字符串匹配的。换句话说,给你两个字符串,你需要回答,B串是否是A串的子串(A串是否包含B串)。比如,字符串A="I'm matrix67",字符串B="matrix",我们就说B是A的子串。解决这类问题,通常我们的方法是枚举从A串的什么位置起开始与B匹配,然后验证是否匹配。假如A串长度为n,B串长度为m,那么这种方法的复杂度是O (mn)的。虽然很多时候复杂度达不到mn原创 2013-07-09 22:03:01 · 1114 阅读 · 0 评论 -
程序员必知算法----BM字符串查找算法
BM字符串查找算法,由Boyer,Moore提出,因而得名。该算法和KMP算法思想一样,都是需要先进行预处理,然后在每次进行匹配失败时,根据预处理的结果,快速找到下一次继续匹配的位置。与KMP不同的是,BM算法在每次匹配时都从后往前开始匹配,这样可以确保在模式字符串的后面字符出现匹配失败时能够快速的进行下面的匹配。如果我们从前往后进行匹配检查,那么当出现前面字符匹配正确,而在最后一个字符出原创 2013-07-10 16:26:24 · 2560 阅读 · 0 评论 -
面试题之二叉树系列
1 求二叉树中相距最远的两个节点之间的距离2 判断二叉树是否平衡二叉树3 指定二叉树,给定两节点求其最近共同父节点4 二叉树的广度遍历、逐层打印二叉树节点数据、只打印某层节点数据5 在二叉树中找出和(叶子到根节点路径上的所有节点的数据和)为指定值的所有路径。6 将二叉查找树转为有序的双链表7 求转载 2013-08-13 00:01:30 · 981 阅读 · 0 评论 -
Boyer-Moore 经典单模式匹配算法
O了O了!我现特想说:一个人Boyer-Moore都敢闹明白,他还有什么不敢的呢^_^ 经典单模式匹配算法:KMP、BM;经典多模式匹配算法:AC、Wu-Manber。貌似实用中,KMP跟C库strstr()效率相当,而BM能快上3x-5x。于是小女不才花了小天的功夫来研究这个BM算法。BM如何快速匹配模式?它怎么跳跃地?我今儿一定要把大家伙儿讲明白了,讲不明白您佬跟帖,我买单,包教包会。转载 2013-08-25 09:28:56 · 875 阅读 · 0 评论 -
AC 经典多模式匹配算法
今天说说多模式匹配AC算法(Aho and Corasick),感谢追风侠帮忙整理资料,while(1) {Juliet.say("3Q");}。前面学习了BM、Wu-Manber算法,WM由BM派生,不过AC与它们无染,是另外一种匹配思路。 1. 初识AC算法Step1: 将由patterns组成的集合(要同时匹配多个patterns嘛)构成一个有限状转载 2013-08-25 10:11:05 · 1130 阅读 · 0 评论 -
mp3、amr、wav三种音频格式时长获取
在平时开发过程中可能遇到需要上传相关音频文件到后台,并且计算各种音频文件的时长,因此对三种音频格式(mp3、amr和wav)的时长计算进行了简单的调研,现将相关实现记录一下,也方便需要的朋友查看。(1)mp3文件时长计算在计算mp3文件时长需要依赖一个外部jar包,如下,如果你使用的是maven构建,那么在pom.xml中引入如下依赖:<dependency> <...原创 2019-02-23 11:19:28 · 6877 阅读 · 3 评论