首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
至多包含K种字符的子串
[编程题]至多包含K种字符的子串
热度指数:2447
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 256M,其他语言512M
算法知识视频讲解
给定一个长度为 n 的字符串 s ,找出最多包含 k 种不同字符的最长连续子串的长度。
数据范围:
, 字符串中仅包含小写英文字母
示例1
输入
"abcck",1
输出
2
示例2
输入
"abcck",2
输出
3
说明
最后三个字符 “cck” 组成最长子串
马上挑战
算法知识视频讲解
提交运行
算法知识视频讲解
添加笔记
求解答(0)
邀请回答
收藏(28)
分享
纠错
提交结果有问题?
13个回答
11篇题解
开通博客
牛客马克西
发表于 2023-11-08 13:51:54
滑动窗口思想:通常用于解决连续子序列问题。该算法通过维护一个固定大小的窗口,将问题转化为对窗口内元素的处理,从而实现高效的计算。具体而言,滑动窗口算法通过移动窗口的起始位置和结束位置,不断更新窗口内的元素,以得到问题的解。 #include <algorithm> #include &l
展开全文
fred-coder
发表于 2022-03-25 22:12:19
哈希, 记录当前字符,当字符数多于 k 时,从上一个字符移动并调整哈希表中的值,直至符合条件 # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param s string字符串 # @param k int整型 # @return int整型 #
展开全文
剑丶暝
发表于 2024-04-08 14:17:16
解题思路:1、使用前后两个指针,移动后指针遍历字符串,把每个字符出现的位置创建为列表,并存入字典;使用res记录结果,初始值为0;2、后指针对应字符在字典中,或字典中的字符种类没有超过k种,则直接把索引存入字典;3、如果对应字符不在字典中,且字典中字符种类等于k种,则记录当前子串大小并更新res;
展开全文
17c89
发表于 2024-05-31 15:13:38
import java.util.*; /** * NC356 至多包含K种字符的子串 * @author d3y1 */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 *
展开全文
根据6
发表于 2024-05-03 18:43:45
使用LRU确定需要移除的字符最后出现的位置。 using System; using System.Collections.Generic; public class KV { public int key; public int value; } public class LRU
展开全文
yeye101
发表于 2023-10-23 17:54:11
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @para
展开全文
姐姐的遮阳伞
发表于 2022-04-05 22:30:17
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @pa
展开全文
17c89
发表于 2024-11-03 11:32:19
import java.util.*; /** * NC356 至多包含K种字符的子串 * @author d3y1 */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 *
展开全文
17c89
发表于 2024-12-03 10:31:47
import java.util.*; /** * NC356 至多包含K种字符的子串 * @author d3y1 */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 *
展开全文
一屋二人三餐四季五层楼六百方
发表于 2022-04-02 01:15:54
//滑动窗口经典题目 , c++解法 class Solution { public: int longestSubstring(string s, int k) { int n = s.size(); &nb
展开全文
问题信息
字符串
哈希
双指针
难度:
13条回答
28收藏
8146浏览
热门推荐
通过挑战的用户
查看代码
牛客13368...
2023-02-10 15:56:42
半个西瓜半个夏
2022-09-13 11:34:09
就,很有意思
2022-09-08 08:35:37
林子20190...
2022-09-07 17:31:15
机灵的做题家上岸了
2022-09-01 21:31:29
相关试题
神奇的数字
排序
双指针
评论
(46)
最小面积子矩阵
动态规划
双指针
前缀和
评论
(46)
和为S的两个数字
数组
数学
双指针
评论
(1513)
来自
“一战通offer”互联...
下列不属于分区表的优势是?
数据库
评论
(1)
在Vue组件销毁时,关于清除定时器...
Vue
评论
(1)
至多包含K种字符的子串
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @param k int整型 * @return int整型 */ public int longestSubstring (String s, int k) { // write code here } }
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @param k int整型 * @return int整型 */ int longestSubstring(string s, int k) { // write code here } };
#coding:utf-8 # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param s string字符串 # @param k int整型 # @return int整型 # class Solution: def longestSubstring(self , s , k ): # write code here
using System; using System.Collections.Generic; class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @param k int整型 * @return int整型 */ public int longestSubstring (string s, int k) { // write code here } }
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @param k int整型 * @return int整型 */ function longestSubstring( s , k ) { // write code here } module.exports = { longestSubstring : longestSubstring };
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param s string字符串 # @param k int整型 # @return int整型 # class Solution: def longestSubstring(self , s: str, k: int) -> int: # write code here
package main import "fmt" /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @param k int整型 * @return int整型 */ func longestSubstring( s string , k int ) int { // write code here }
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @param k int整型 * @return int整型 */ int longestSubstring(char* s, int k ) { // write code here }
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param s string字符串 # @param k int整型 # @return int整型 # class Solution def longestSubstring(s, k) # write code here end end
object Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @param k int整型 * @return int整型 */ def longestSubstring(s: String,k: Int): Int = { // write code here } }
object Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @param k int整型 * @return int整型 */ fun longestSubstring(s: String,k: Int): Int { // write code here } }
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @param k int整型 * @return int整型 */ public int longestSubstring (String s, int k) { // write code here } }
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @param k int整型 * @return int整型 */ export function longestSubstring(s: string, k: number): number { // write code here }
public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @param k int整型 * @return int整型 */ func longestSubstring ( _ s: String, _ k: Int) -> Int { // write code here } }
struct Solution{ } impl Solution { fn new() -> Self { Solution{} } /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @param k int整型 * @return int整型 */ pub fn longestSubstring(&self, s: String, k: i32) -> i32 { // write code here } }
"abcck",1
2
"abcck",2
3