KMP算法学习笔记

摘要: KMP算法本科的时候简单学习过,可是好久不用,回头看才发现它还认识我,我却已不认得我了,惭愧!重新拿起课本啃了下,看了半天也回过神来,暂且做个笔记简单记下。首先为描述方便,先定义两个串:其中数组 des[N] 表示目标串 ,pat[M] 表示模式串, 数组下标均从 1 开始,des[i...j] 表示从i到 j 的子串,pat[i...j] 类似。然后说下算法本身。对于原始算法而言。如果 des[i...i+j] 和 pat[1...j] 进行比对。设前面 j - 1 次比对都相同但第 j 次比对不同时,目标串回退 j - 1 位,接下来再继续拿 des[i+1] 和 pat[1] 进行重新比 阅读全文
posted @ 2013-12-31 01:39 水济尘 阅读(142) 评论(0) 推荐(0)

KMP算法学习

摘要: ---恢复内容开始---void get_next(String T ,int[] next){ //求模式串中T的next函数值并将其存入next数组 int i,j; i = 1; j = 0; next[1] = 0; while(i < T[0]) if(j == 0 || T[i] == t[j] ){ ++ i; ++ j; next[i] = j ; } else{ j = next... 阅读全文
posted @ 2013-12-30 16:04 水济尘 阅读(95) 评论(0) 推荐(0)

JS之遍历对象属性

摘要: JS对象遍历通常使用for/in循环来实现,for/in循环能在循环体中遍历对象中的所有可枚举的属性,并把属性名称赋值给循环变量。如果想进一步区分自由属性和方法,要进行进一步的限制,如 for(p in o) { if (o.hasOwnPeoperty(p)) continue; // 跳过继承的属性}for(p in o) { if (typeof o[p] ==="function") continue; // 跳过方法} 下面是一些用for/in来操纵对象属性的工具/* * 将p中的可枚举属性复制到o中 * 如果o和p中有同名的属性,则覆盖o中同名属性 *... 阅读全文
posted @ 2013-09-02 16:42 水济尘 阅读(593) 评论(0) 推荐(0)

JS权威指南学习笔记之文档结构和遍历

摘要: 关于nodeType,其中9为Document节点(根),1为Element节点,3为Text节点,8代表Comment节点,11为DocumentFragment节点。以下代码为实现文档遍历:一、遍历祖先元素 1 /** 2 * 返回元素e的第N层祖先原色,如果祖先不存在或者祖先不是Element则 返回为null 3 * 如果n为0,则返回e本身,如果n省略,则置为1,返回父元素 4 * 如果n为其他,则顺利返回 5 */ 6 function parent(e, n) { 7 if (n === undefined) n = 1; 8 while(n... 阅读全文
posted @ 2013-08-13 16:55 水济尘 阅读(183) 评论(0) 推荐(0)

JS权威指南学习笔记之脚本化文档

摘要: // 查找其class属性值中包含"warning"的所有元素var warnings = document.getElementsByClassName("waring");// 查找以"log"命名并且有"error"和"fatal"类的元素的所有后代var log = document.getElementById("log");// 用空格隔开,顺序无关紧要,但只有都满足的时才符合,注意两个Element一个有s,一个没有var fatal = log.getElem 阅读全文
posted @ 2013-08-13 14:36 水济尘 阅读(130) 评论(0) 推荐(0)