摘要: KMP算法,Knuth-Morris-Pratt Algorithm,一种由Knuth(D.E.Knuth)、Morris(J.H.Morris)和Pratt(V.R.Pratt)三人提出的一种快速模式匹配算法。KMP朴素算法原理:子串pattern依次与目标串target中的字符比较,如果相等,继续比较下一个字符;如果不等,pattern右移一位,重新开始比较,直至匹配正确或超出target。示例:子串pattern={aabaa},目标串target={aababaacaabaa},比较过程如下图:特点:思路简单、代码直观;但效率低、有回溯、不够简洁、时间复杂度高// 在target中查找 阅读全文
posted @ 2011-12-28 16:56 SpringMVC+Hibernate 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 题目:数组中某数字减去其右边的某数字得到一个数对之差,求所有数对之差的最大值。例如:数组{2, 4, 1, 16, 7, 5, 11, 9}中,数对之差的最大值是11(16 - 5)分析:看到这个题目,很多人的第一反应是找到这个数组的最大值和最小值,然后觉得最大值减去最小值就是最终的结果。但由于我们无法保证最大值一定位于数组的左边,因此这个思路不管用。让每一个数字逐个减去它右边的所有数字,并通过比较得到数对之差的最大值,总的时间复杂度是O(n2)。解法1:分治法(递归实现)通常蛮力法不会是最好的解法,我们想办法减少减法的次数。假设我们把数组分成两个子数组,我们其实没有必要拿左边的子数组中较大的 阅读全文
posted @ 2011-12-28 10:08 SpringMVC+Hibernate 阅读(157) 评论(0) 推荐(0) 编辑
友情链接:厦门事业单位