C++ 实现KMP字符串匹配算法
2023-09-11 14:22:32 时间
以前写的代码,先搬运到CSDN上来。先贴代码,后面补说明
代码实现
KMP主函数
int KMP(char * t, char * p)
{
int i = 0;
int j = 0;
int* pNext = new int[(int)strlen(p)]{-1};
GetNext(p,pNext);
while (i < (int)strlen(t) && j < (int)strlen(p))
{
if (j == -1 || t[i] == p[j])
{
i++;
j++;
}
else
j = pNext[j];
}
if (j == strlen(p))
return i - j;
else
return -1;
}
GetNext函数
void GetNext(char * p, int * next)
{
next[0] = -1;
int i = 0, j = -1;
while (i < (int)strlen(p))
{
if (j == -1 || p[i] == p[j])
{
++i;
++j;
next[i] = j;
}
else
j = next[j];
}
}
相关文章
- 不好好学 C++ 还想做好算法?
- 【c++】“谁想继承我的花呗-.-“继承的学习
- C/C++<算法>进制转换超详细
- 《C++ 开发从入门到精通》——2.5 算法是程序的灵魂
- 基于C++实现SLIC 超像素分割算法【100010745】
- 基于QT(C++)实现查找算法图形化(数据结构课程设计)【100010640】
- 基于C++实现(控制台)应用递推法完成经典型算法的应用【100010505】
- 理清gcc、libc、libstdc++的关系(libstdc++是gcc搞的,libc++是llvm搞的,他们都是C++标准库的实现)
- 蓝桥杯省赛(填空题)— 路径 SPFA算法(C++)
- 174、【动态规划/贪心算法/滑动窗口】leetcode ——674. 最长连续递增序列:一题多解 (C++版本)
- 130、【贪心算法/动态规划】leetcode ——122. 买卖股票的最佳时机 II(C++版本)
- 125、【回溯算法】leetcode ——47.全排列 II:visited去重(C++版本)
- 41、【匹配算法】KMP字符串匹配算法(C/C++版)
- C++ 用libcurl库进行http通讯网络编程[转]
- 仿真算法数据结构与算法 C++实现
- 关于C/C++中求最大公约数和最小公倍数的算法
- C++创建类的对象(类的初始化)的方法