社区
C++ 语言
帖子详情
KMP的next数组
tzw513
2017-08-01 02:17:55
KMP的求next数组代码
void Get_next(int *next, char *str)
{
int i,j;
i = 0;
next[0] = j = -1;
int len = strlen(str);
while(i < len){
if(j==-1 || str[i]==str[j]){
next[i+1] = j+1;
i++; j++;
}
else j = next[j];
}
}
其中j=next[j]为什么这样就能令j返回-1啊????
...全文
229
4
打赏
收藏
KMP的next数组
KMP的求next数组代码 void Get_next(int *next, char *str) { int i,j; i = 0; next[0] = j = -1; int len = strlen(str); while(i < len){ if(j==-1 || str[i]==str[j]){ next[i+1] = j+1; i++; j++; } elsej = next[j]; } } 其中j=next[j]为什么这样就能令j返回-1啊????
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
上山老人
2017-08-02
打赏
举报
回复
核心思想是:为了提高匹配效率,不会一次只移动一位(全匹配),而是根据字串自身的一些特点移动多位。
上山老人
2017-08-02
打赏
举报
回复
你自己准备两个小一点字符串,按照kmp算法的逻辑去人工匹配一下
verphan
2017-08-01
打赏
举报
回复
楼主可以参考这个理解
KMP算法详解
j=next[j] 进入上面这句的时候是因为next的下一个符号不能满足条件,不能用前一个next算下一个,所以要在已匹配的字符串里面再找子串——相当于前后两个匹配子串再在内部找子串,就像A=B,然后A段的前部C与后部D满足C=D。而B段的前部后部也是C和D,所以A段的前段就等于B段的后段啦,继续匹配。
赵4老师
2017-08-01
打赏
举报
回复
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒:再牛×的老师也无法代替学生自己领悟和上厕所! 单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。 百度搜相关关键字。
【
KMP
】从原理上详解next
数组
和nextval
数组
全网最详细的next和nextval讲解,并比较了与现在普遍的
KMP
算法实现中的next
数组
间的异同。
KMP
算法中的next
数组
求解
求解
KMP
算法中的next
数组
KMP
-两种方法求next
数组
作为408考生,数据结构绕不开
KMP
算法,网上各种求next
数组
的方法和结果竟各有不同,本文将带你探讨产生这种局面的原因和求next
数组
的两种方法。
KMP
算法——详解next
数组
令人烦恼的next
数组
,本文是作者自己的理解与思考,并不完善,只是为了提示自己,如果您已研究了
KMP
算法,本文对您的帮助并不大 next
数组
完成的任务: 当s1与s2字符串比较到上图所示位置时,拥有next
数组
的
KMP
算法不需要像BF算法一样: 将 j 回退到开始的第二个字符 将 i 退回到字符串头部 而是: 将 i 回退到第二个字符b处 j 不动 因为图示位置的前面都是匹配的字符 , 相匹配的字符串一定具有相同的前缀,所以b,c的比较就显得有点浪费资源,所以只需要找到相同的前缀就可以减少
KMP
算法之next
数组
详解
KMP
算法之next
数组
详解
KMP
算法实现原理
KMP
算法是一种非常高效的字符串匹配算法,下面我们来讲解一下
KMP
算如何高效的实现字符串匹配。我们假设如下主串和模式串: int i;//i表示主串的下标 int j;//j表示模式串的下标 char P[]=“ABCABDACFGHEADEW”;//主串 char T[]=“ABCABAEABD”;//模式串 开始查找 按照正常逻辑,我们都知道,如果我想在主串中匹配“ABCABAEABD”这个模式串,那么我们首先想到的是将主串和模式串中的每个
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章