next函数
来源:互联网 发布:奇兔刷机软件电脑 编辑:程序博客网 时间:2024/06/05 18:29
//递推求解#include <string.h>int* getNext( char* pattern) { int len=strlen(pattern); int* next=new int[len];//动态创建内存 next[0]=-1; for(int i=1; i<len; i++) { int j=next[i-1]; while(j!=-1 && pattern[j]!=pattern[i-1]) j=next[j]; if(j==-1) next[i]=0; else next[i]=j+1; } return next;}
//非递推算法
void getNext(char* p ,int next[], int len){for(int i=0; i<len; i++)next[i]=-1;next[1]=0;for(int k=2; k<len; k++){for(int i=1; i<k; i++){int m=i;int n=0;while(m!=k && p[m]==p[n]){m++;n++;}if(m==k){next[k]=n;break;}}if(next[k]==-1)next[k]=0;}for(i=0; i<len; i++)cout<<next[i]<<" ";cout<<endl;}
完整的KMP算法实现
#include <IOSTREAM.H>#include <string.h>void getNext(char* p, int* next, int len){next[0]=-1;for(int i=1; i<len; i++){int j=next[i-1];while(p[j]!=p[i-1] && j>-1)j=next[j];if(j==-1)next[i]=0;elsenext[i]=j+1;}}void match(char* dest, char* pattern){int p_len=strlen(pattern);int* next=new int[p_len];getNext(pattern,next,p_len);int i=0;int j=0;int dest_len=strlen(dest);while(i<dest_len){while(i<dest_len && j<p_len){if(dest[i]==pattern[j]){i++;j++;}else{next[j]!=-1 ? j=next[j] : i++,j=0;//三目运算符,等同于if else语句!}}if(j==p_len)cout<<i-j<<endl;i++;j=0;}/* while(i!=slen && j!=tlen) { if(s[i]==t[j]) { i++; j++; } else { j=next[j]; if(j==-1) { i++; j=0; } } } IF(J==TLEN)。。。. ELSE。。。*/ } void main(){char* dest="abcdcdcdcfjcdadbcdfjdbdfeed";char* pattern="cdc";match(dest,pattern);}
- next函数
- 数据结构----next函数解释
- KMP的next函数
- next permutation函数
- jquery next函数实例
- next() ,current(),reset() 函数
- next permutation函数
- next permutation函数
- 字符串next函数求值
- python next()函数
- python: iter、next函数
- KMP算法中的next函数
- next函数与kmp模板
- express 框架 , next() 函数很重要。
- KMP算法中next函数
- next permutation函数(2)
- next permutation函数(3)
- KMP函数的next函数求解方法
- Spring中应用反射机制浅析
- 《coredump问题原理探究》Linux x86版5.3节C风格数据结构内存布局之数组
- in、exists、not in、not exists
- linux文件权限设置
- linux mysql
- next函数
- 用MDK:test.axf: Error: L6630E: Invalid token start expected number or ( but found
- Jquery怎么修改同一class的元素的css
- struts2国际化-包范围资源文件
- 设计模式---单例设计模式(Singleton Pattern)
- main函数的参数
- MDK:test.axf: Error: L6630E: Invalid token start expected number or ( but found n at position 5 on l
- 全局变量与局部变量体会
- MessageFilter ROS错误