395. 至少有K个重复字符的最长子串

server/2025/2/1 17:51:35/

参考题解:https://leetcode.cn/problems/longest-substring-with-at-least-k-repeating-characters/solutions/623991/jie-ben-ti-bang-zhu-da-jia-li-jie-di-gui-obla

  • 递归含义:返回字符串s中至少有k个重复字符的最长子串
  • 递归终止条件:当s的长度小于k,终止
  • 递归条件:当s中的某个字符c的数量小于k,则包含c的子串必然不符合条件,因此根据字符c对字符串s进行切分,得到若干个字符串t,对t递归进行上述检查。
  • 递归条件外:指没进入递归条件,即s中所有字符的数量都大于等于k,因此符合条件的最长子串就是s本身。
java">class Solution {public int longestSubstring(String s, int k) {int n = s.length();if (n < k) return 0;Map<Character, Integer> counter = new HashMap<>();for (int i = 0; i < n; ++i) {counter.put(s.charAt(i), counter.getOrDefault(s.charAt(i), 0) + 1);}for (char c : counter.keySet()) {if (counter.get(c) < k) {int ans = 0;for (String t : s.split(String.valueOf(c))) {ans = Math.max(ans, longestSubstring(t, k));}return ans;}}return n;}
}

http://www.ppmy.cn/server/164124.html

相关文章

洛谷P3372 【模板】线段树 1以及分块

【模板】线段树 1 题目描述 如题&#xff0c;已知一个数列&#xff0c;你需要进行下面两种操作&#xff1a; 将某区间每一个数加上 k k k。求出某区间每一个数的和。 输入格式 第一行包含两个整数 n , m n, m n,m&#xff0c;分别表示该数列数字的个数和操作的总个数。 …

数据结构--差分数组(含题目)<基础入门>

定义&#xff1a;差分数组是一种处理数据的技巧&#xff0c;主要用于高效地执行区间修改操作。在一个数组中&#xff0c;如果需要频繁地对某个区间的所有元素执行相同的操作&#xff08;如加或减一个常数&#xff09;&#xff0c;直接遍历并更新区间内的每个元素会非常耗时。差…

动态规划(路径问题)

62. 不同路径 62. 不同路径 - 力扣&#xff08;LeetCode&#xff09; 动态规划思想第一步&#xff1a;描述状态~ dp[i][j]&#xff1a;表示走到i&#xff0c;j位置时&#xff0c;一共有多少种方法~ 动态规划思想第二步&#xff1a;状态转移方程~ 动态规划思想第三步&#xf…

c++ map/multimap容器 学习笔记

1 map的基本概念 简介&#xff1a; map中所有的元素都是pair pair中第一个元素是key&#xff08;键&#xff09;&#xff0c;第二个元素是value&#xff08;值&#xff09; 所有元素都会根据元素的键值自动排序。本质&#xff1a; map/multimap 属于关联式容器&#xff0c;底…

Deepseek的RL算法GRPO解读

在本文中&#xff0c;我们将深入探讨Deepseek采用的策略优化方法GRPO&#xff0c;并顺带介绍一些强化学习&#xff08;Reinforcement Learning, RL&#xff09;的基础知识&#xff0c;包括PPO等关键概念。 策略函数&#xff08;policy&#xff09; 在强化学习中&#xff0c; a…

go gin配置air

一、依赖下载 安装最新&#xff0c;且在你工作区下进行安装&#xff0c;我的是D:/GO是我的工作区&#xff0c;所有项目都在目录下的src&#xff0c; go install github.com/air-verse/airlatest 如果出现类似报错&#xff1a; 将图中第三行 github.com/air-verse/air 替换最…

机试题——考古学家

题目描述 有一个考古学家发现一个石碑&#xff0c;但是很可惜&#xff0c;发现时其已经断成多段&#xff0c;原地发现n个断口整齐的石碑碎片。 为了破解石碑内容&#xff0c;考古学家希望有程序能帮忙计算复原后的石碑文字组合数&#xff0c;你能帮忙吗&#xff1f; 输入描述…

idea对jar包内容进行反编译

1.先安装一下这个插件java Bytecode Decompiler 2.找到这个插件的路径&#xff0c;在idea的plugins下面的lib文件夹内&#xff1a;java-decompiler.jar。下面是我自己本地的插件路径&#xff0c;以作参考&#xff1a; D:\dev\utils\idea\IntelliJ IDEA 2020.1.3\plugins\java-d…