KMP的c语言实现和学习

本文主要介绍了KMP算法的思路,通过观看B站上的教学视频深入理解,并提供了完整的C语言实现代码,代码经过验证可正常运行。链接包括算法思路讲解、代码实现视频以及可运行代码的详细博客文章。
摘要由CSDN通过智能技术生成

一、学习要点:
1.KMP算法思路了解:https://www.bilibili.com/video/av3246487?from=search&seid=11009544750632580740
2.KMP完整代码实现视频:
https://www.bilibili.com/video/av16828557/?spm_id_from=333.788.videocard.2
3.完整代码实现可运行版,参考:https://blog.csdn.net/xiaoquantouer/article/details/62444741
二、代码

#include<iostream>
#include<stdlib.h>
#include<string>
#include<vector>
using namespace std;
vector<int> getNe(string ss)
{
 int n = ss.size();
 vector<int> next(n);
 int k = 0;
 for (int i = 1; i < n; i++)
 {
  while (k != 0 && ss[k] != ss[i])
  {
   k = next[k - 1];
  }
  if (ss[k] == ss[i])
  {
   next[i] = ++k;
  }
  else
  {
   next[i] = k;
  }
 }
 return next;
}
int KMP(string str, string ss)
{
 int n = str.size();
 int m = ss.size();
 vector<int> next = getNe(ss);
 for (int i = 0,k=0; i &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值