摘要:
KMP算法的核心是提前根据模式串计算出来一张表,这张表中记录着什么情况下能够往后移的幅度大一些,以减少重复的匹配,理解步骤如下:首先,应知道什么是失配,就是模式串在和目标文本的遍历匹配过程中遇到了不匹配的字符。其次,失配无非两种情况:首字符失配,非首字符失配。首字符失配时,模式串后移一步,匹配后面的字符。非首字符失配时,这时有个有价值的信息,就是我们已经知道了失配的字符之前的那些没有失配的那些字符,那些字符有什么特点呢?怎么样才能帮助我们减少匹配次数呢?那些字符的特点是:是模式串的从头开始的一个子串!KMP算法的核心正是分析它的子串,从而减少匹配次数。这个特点看起来很简单,合理利用的话,可以大 阅读全文
posted @ 2013-09-30 05:46
铁甲小宝
阅读(515)
评论(0)
推荐(0)
摘要:
本来想用对和栈的空间分配方法去实现类似于sizeof的功能,结果各种问题,相同的代码VS出来24,VC出来8,更有malloc函数分配1字节内存时,相邻空间间隔在VS中为64字节,在VC中和VS不同,只好先看看内存到底是怎么分配的了:首先:基本常识:1 栈向低地址稳定增长,其空间在编译时确定,调用函数时分配,不能动态分配;堆中可动态分配空间,每一次分配都会优先分配低地址空间,如果低地址空间实在没有合适的可用空间,则在高地址空间分配。2 调用函数时的参数,是从右向左依次压入栈,换句话说,第一个参数,最后被压入栈,第一个弹出栈。3 测试了一下,栈底的存的是0xCCCCCCCC,大概就是传说中的安全 阅读全文
posted @ 2013-09-30 00:39
铁甲小宝
阅读(638)
评论(0)
推荐(0)
浙公网安备 33010602011771号