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; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术