NC149 kmp算法

描述

给你一个文本串 T ,一个非空模板串 S ,问 S 在 T 中出现了多少次

数据范围:1≤len(S)≤500000,1≤len(T)≤1000000

要求:空间复杂度 O(len(S)),时间复杂度 O(len(S)+len(T))

示例1

输入:

"ababab","abababab"

返回值:

2

示例2

输入:

"abab","abacabab"

返回值:

1

代码:

/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 计算模板串S在文本串T中出现了多少次
* @param S string字符串 模板串
* @param T string字符串 文本串
* @return int整型
*/
#include <string.h>
int BF(char* s, char* t, int slen, int tlen) {
int j = 0, i = 0;
int count = 0;
while (j < slen && i < tlen) {
while (j < slen && i < tlen) {
if (s[j] == t[i]) {
j++;
i++;
} else {
i = i - j + 2 - 1;
j = 0;
}
}
if (j == slen) {
++count;
i = i - j + 2 - 1;
j = 0;
}
}
return count;
}
int kmp(char* S, char* T ) {
// write code here
int count = BF(S, T, strlen(S), strlen(T));
return count;
}
posted @   有空  阅读(7)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示