首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
kmp算法
[编程题]kmp算法
热度指数:35654
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 256M,其他语言512M
算法知识视频讲解
给你一个
文本串
T ,一个
非空模板串
S ,问 S 在 T 中出现了多少次
数据范围:
要求:空间复杂度
,时间复杂度
示例1
输入
"ababab","abababab"
输出
2
示例2
输入
"abab","abacabab"
输出
1
马上挑战
算法知识视频讲解
提交运行
算法知识视频讲解
添加笔记
求解答(0)
邀请回答
收藏(599)
分享
提交结果有问题?
66个回答
78篇题解
开通博客
子夜降晴空
发表于 2021-04-05 16:48:37
class Solution { public: int kmp(string S, string T) { if(S.empty() || S.size() > T.size()) return 0; //边界处理 int res = 0, next[
展开全文
xqxls
发表于 2021-07-28 00:29:17
题意整理 给定模式串S和主串T。 求模式串S在主串T中出现的次数。 方法一(朴素模式匹配) 1.解题思路 首先进行特殊情况判断,如果模式串长度大于主串,或者主串为空,返回0。 然后分别遍历主串和模式串,只要当前字符相等,模式串和主串均后移一位,如果不相等,模式串重新回退到索引0的位置,同时主串
展开全文
Ruoji55555
发表于 2021-03-14 11:27:41
对原生kmp做个改造 主要两点: next数组多算一格 kmp匹配时,如果完全匹配上,则ans计数+1, 并让模式串移动到next[ti]位置 public int kmp (String S, String T) { // write code here
展开全文
等一个广哥哥
发表于 2021-06-03 21:50:42
在Carl那学的KMP算法 class Solution { public: int kmp(string S, string T) { int ans = 0; int next[S.size()]; int j = 0; n
展开全文
2019113916
发表于 2021-10-13 22:01:07
题意概述 给定一个模式串S和一个文本串T 要求得到模式串S在文本串T中出现的次数 方法一:Brute_Force算法(朴素模式匹配算法超时) 思路与具体做法 同时遍历文本串和模式串 如果两串对应位相等,接着比较下一位 如果不相等,令模式串回到上一次开始匹配位置的下一位,而文本串从头开始比较
展开全文
下辈子不想用脑子了
发表于 2022-01-12 11:00:07
代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 计算模板串S在文本串T中出现了多少次 @param S string字符串 模板串 @param T string字符串 文本串 @return int整型 def kmp(self , S: str, T: str) -
展开全文
秋葉随風
发表于 2021-06-29 10:33:01
稍微看了下别人的题解,反正我是从来都记不住next数组是怎么计算的。。。此解法来自labuladong大佬最基础的kmp:利用状态机的思想,当字符匹配的时候推进状态;当字符不匹配的时候要回到某个状态(有相同前缀的状态)二维数组虽然增加了空间复杂度,但是好理解多了好嘛 class KMP {
展开全文
空中转体一周半
发表于 2022-03-09 10:53:45
建议背住,匹配的过程和求next的过程很相似。 public class Solution { public int kmp (String S, String T) { // write code here int count = 0; in
展开全文
勤奋的猫
发表于 2023-06-17 22:56:21
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * <p> * 计算模板串S在文本串T中出现了多少次 *
展开全文
莉莉姆
发表于 2021-10-31 17:25:48
kmp算法 1,概念 kmp算法就是根据模式字符串匹配目标字符串 2,kmp算法原理 1)求出模式字符串的所有子串的最长前缀和后缀相等的长度,并求出next数组 例如,题目给的ababab 它的所有字串有: a ab aba abab ababa ababab 对应的最长相等的前缀后缀: 0 0
展开全文
问题信息
字符串
难度:
66条回答
599收藏
11409浏览
热门推荐
通过挑战的用户
查看代码
skylark...
2023-02-04 20:01:37
牛客27327...
2022-10-04 13:06:13
牛客76427...
2022-09-20 21:53:21
牛客72914...
2022-09-17 07:46:02
NewArhan
2022-09-16 15:09:07
相关试题
下面伪代码程序: C...
Java工程师
C++工程师
安卓工程师
运维工程师
算法工程师
商汤科技
2018
嵌入式工程师
评论
(1)
来自
嵌入式工程师能力评估
在Java语言中,关于集合框架类的...
Java
评论
(1)
大模型的“集成学习”主要是指什么?
大模型概念
评论
(1)
评估大型语言模型生成文本质量时,R...
大模型概念
评论
(1)
关于大模型推理优化的技术方向,最符...
大模型概念
评论
(1)
kmp算法
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 计算模板串S在文本串T中出现了多少次 * @param S string字符串 模板串 * @param T string字符串 文本串 * @return int整型 */ public int kmp (String S, String T) { // write code here } }
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 计算模板串S在文本串T中出现了多少次 * @param S string字符串 模板串 * @param T string字符串 文本串 * @return int整型 */ int kmp(string S, string T) { // write code here } };
#coding:utf-8 # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # 计算模板串S在文本串T中出现了多少次 # @param S string字符串 模板串 # @param T string字符串 文本串 # @return int整型 # class Solution: def kmp(self , S , T ): # write code here
using System; using System.Collections.Generic; class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 计算模板串S在文本串T中出现了多少次 * @param S string字符串 模板串 * @param T string字符串 文本串 * @return int整型 */ public int kmp (string S, string T) { // write code here } }
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 计算模板串S在文本串T中出现了多少次 * @param S string字符串 模板串 * @param T string字符串 文本串 * @return int整型 */ function kmp( S , T ) { // write code here } module.exports = { kmp : kmp };
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # 计算模板串S在文本串T中出现了多少次 # @param S string字符串 模板串 # @param T string字符串 文本串 # @return int整型 # class Solution: def kmp(self , S: str, T: str) -> int: # write code here
package main import "fmt" /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 计算模板串S在文本串T中出现了多少次 * @param S string字符串 模板串 * @param T string字符串 文本串 * @return int整型 */ func kmp( S string , T string ) int { // write code here }
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 计算模板串S在文本串T中出现了多少次 * @param S string字符串 模板串 * @param T string字符串 文本串 * @return int整型 */ int kmp(char* S, char* T ) { // write code here }
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # 计算模板串S在文本串T中出现了多少次 # @param S string字符串 模板串 # @param T string字符串 文本串 # @return int整型 # class Solution def kmp(S, T) # write code here end end
object Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 计算模板串S在文本串T中出现了多少次 * @param S string字符串 模板串 * @param T string字符串 文本串 * @return int整型 */ def kmp(S: String,T: String): Int = { // write code here } }
object Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 计算模板串S在文本串T中出现了多少次 * @param S string字符串 模板串 * @param T string字符串 文本串 * @return int整型 */ fun kmp(S: String,T: String): Int { // write code here } }
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 计算模板串S在文本串T中出现了多少次 * @param S string字符串 模板串 * @param T string字符串 文本串 * @return int整型 */ public int kmp (String S, String T) { // write code here } }
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 计算模板串S在文本串T中出现了多少次 * @param S string字符串 模板串 * @param T string字符串 文本串 * @return int整型 */ export function kmp(S: string, T: string): number { // write code here }
public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 计算模板串S在文本串T中出现了多少次 * @param S string字符串 模板串 * @param T string字符串 文本串 * @return int整型 */ func kmp ( _ S: String, _ T: String) -> Int { // write code here } }
struct Solution{ } impl Solution { fn new() -> Self { Solution{} } /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 计算模板串S在文本串T中出现了多少次 * @param S string字符串 模板串 * @param T string字符串 文本串 * @return int整型 */ pub fn kmp(&self, S: String, T: String) -> i32 { // write code here } }
"ababab","abababab"
2
"abab","abacabab"
1