【模版】KMP算法中next数组的求法。
来源:互联网 发布:开源b2c商城系统源码 编辑:程序博客网 时间:2024/05/17 06:56
前言:今天又重新复习了一下KMP串匹配。寒假集训的时候觉得对这个算法很明了,组成部分就那几个。没想到今天回头再看,在求next那卡住了。突然明白,现在会不是真的会,若干时间后依然记起才是真正的大成。
第一次写,写的有点水,不喜勿喷。
正题:
举例说明
序位 1 2 3 4 5 6 7 8
模式串 a b a a b c a c
next值 0 1 1 2 2 3 1 2
1.第一位的next值为0 ;
2.第二位的next值为1 后面求解每一位的next值时,根据前一位进行比较;
3.第三位的next值:第二位的模式串为b ,对应的next值为1;将第二位的模式串b与第一位的模式串a进行比较,不相等;则第三位的next值为1;
4.第四位的next值:第三位的模式串为a ,对应的next值为1;将第三位的模式串a与第一位的模式串a进行比较,相同,则第四位的next值得为2;
5.第五位的next值:第四位的模式串为a,对应的next值为2;将第四位的模式串a与第二位的模式串b进行比较,不相等;第二位的b对应的next值为1,则将第四位的模式串a与第一位的模式串a进行比较,相同,则第五位的next的值为2;
6.第六位的next值:第五位的模式串为b,对应的next值为2;将第五位的模式串b与第二位的模式中b进行比较,相同,则第六位的next值为3 ;
7.第七位的next值:第六位的模式串为c,对应的next值为3;将第六位的模式串c与第三位的模式串a进行比较,不相等;第三位的a对应的next值为1,则将第六位的模式串c与第一位的模式串a进行比较,不相同,则第七位的next值为1;
8.第八位的next值:第七位的模式串为a,对应的next值为1;将第七位的模式串a与第一位的模式串a进行比较,相同,则第八位的next值为2 ;
自附一段求next数组的代码。可当模版来使用。
int get_next( ){ int i=0,j=-1; next[0]=-1; while(i<n) { if(j==-1||c[i]==c[j]) { ++i; ++j; next[i]=j; } else j=next[j]; } }
- 【模版】KMP算法中next数组的求法。
- 详解KMP算法中Next数组的求法
- 详解KMP算法中Next数组的求法
- KMP算法中next数组的求法分析
- kmp算法中next[]数组求法的基本思想
- KMP算法next数组求法
- kmp 的next 数组求法
- KMP next数组的求法
- KMP算法next的求法
- 字符串匹配KMP算法中Next[]数组求法
- 字符串匹配KMP算法中Next[]数组求法
- KMP模式匹配算法中next[]数组求法
- 字符串匹配KMP算法中Next[]数组求法
- KMP算法中Next数组及改进后的nextval数组的求法
- KMP算法-next数组的含义和求法
- 关于kmp算法中next数组的求法【针对手算的】
- KMP算法next数组递归求法
- KMP算法-Next数组递归求法
- String 和StringBuffer区别
- Linux 系统性能分析工具3
- mars android开发之十一:XML文件解析
- Recover Binary Search Tree
- STL—— 关联容器
- 【模版】KMP算法中next数组的求法。
- C++STL源码剖析代码
- Light OJ 1278 Sum of Consecutive Integers N拆分成连续整数和
- Android开发常用权限汇总
- 在弱网传输的情况下,是怎么做到节约流量的(面试小问题,Android篇)
- 使用keil4开发FL2440开发板 keil4配置
- Microsoft .net framework required for microsoft visual studio ultimate 2012 setup解决办法
- 测试for循环和最大公约数
- hadoop面试题