KMP模板
2013-08-27 20:53
197 查看
void get_next(const string sub, int *next) { int len=sub.length(); int i,k; next[0]=k=-1; for (i=0; i<len;) { if (k==-1 || sub[i]==sub[k]) { k++; i++; if (sub[k]!=sub[i]) next[i]=k; else next[i]=next[k]; //避免重复计算优化next数组 } else k=next[k]; } } int KMP(const string str, const string sub, const int *next) //返回子串在主串中的起始位置下标 { int i,j; int len1=str.length(); int len2=sub.length(); for (i=0, j=0; i<len1 && j<len2;) { if (j==-1 || str[i]==sub[j]) { i++; j++; } else { j=next[j]; } } if (j==len2) return i-len2; return -1; //如果找不到就返回-1 }
相关文章推荐
- HDOJ3336 KMP简单应用+模板程序
- hdu 1711 Number Sequence(KMP模板题)
- 【模板】KMP
- pku 3461 kmp(模板)
- 拓展KMP 模板
- kmp模板
- 【KMP模板】
- KMP模板题
- 杭电1686-KMP模板题
- HDU 1711 Number Sequence (KMP找子串第一次出现的位置)(基础模板题)
- kmp 模板
- [洛谷3375]【模板】KMP字符串匹配
- KMP模板
- hdu 1711 Number Sequence(kmp模板题)
- POJ 3461 Oulipo KMP模板题
- KMP模板
- (模板题)sdut 2125 数据结构实验之串二:字符串匹配(KMP)
- KMP匹配模板
- POJ 3461 Oulipo (KMP模板题)
- leetcode oj 28 字符串匹配 kmp 下标从0开始 kuangbin模板