KMP算法板子
int next[100]; void getnext() { string a//(查找的串) next[0]=-1; int j=0,k=-1; for(j=0;j<a.size();j++) { if(k==-1||a[j]==a[k]) { next[++j]=++k; } else { k=next[k]; } } }
得到所用的next数组
int kmp(string s)//s 被查找的串 { int j=0; for(int i=0;i<s.size();i++) {
j=0; while(i<s.size()&&j!=-1&&j<a.size()) { if(a[i]==a[j]) j++; else j=next[j]; if(j==a.size()) return i-a.size(); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步