当前位置: 首页 > news >正文

每种字符至少取K个

2516. 每种字符至少取 K 个 - 力扣(LeetCode)

Solution

从两端取数字,根据之前的经验,直接用逆向思维,考虑中间的连续部分。

从两端取到每个字符各至少k个,先计算出原字符串中a,b,c的个数,如果有小于k的,直接返回-1.

从两端取至少k个,相当于从中间的连续部分取至多cnt_a-k,cnt_b-k,cnt_c-k个,这又回到了满足约束的连续子数组问题,用变长滑动窗口解决,记录最长窗口长度,最后用字符串总长度减去最大窗口长度就可以得到答案。

class Solution {
public:int takeCharacters(string s, int k) {vector<int> cnt(3, 0);int n = s.length();for (int i = 0; i < n; ++i) {cnt[s[i] - 'a']++;}int ans = -1;for (int i = 0; i < 3; ++i) {cnt[i] -= k;if (cnt[i] < 0)return -1;}for (int i = 0; i < 3; ++i)cout << cnt[i] << " ";vector<int> win_cnt(3, 0);int l = 0;for (int r = 0; r < n; ++r) {win_cnt[s[r] - 'a']++;while (win_cnt[s[r] - 'a'] > cnt[s[r] - 'a']) {win_cnt[s[l] - 'a']--;l++;}ans = max(ans, r - l + 1);}return n - ans;}bool check(vector<int>& a, vector<int>& b) {for (int i = 0; i < 3; ++i) {if (a[i] > b[i])return true;}return false;}
};

http://www.dtcms.com/a/427146.html

相关文章:

  • random.gauss()函数和numpy.random.normal()函数生成正态分布随机数
  • 【C++】STL -- 仿函数的定义与使用
  • Linux新环境安装solana开发所需全部套件(持续更新)
  • 一个高性能的HTTP和反向代理服务器:Nginx
  • 人工智能客服应用如何重塑电商服务生态?智能AI软件带来的三大变革
  • 网站建设的注意学校网站开发方案模板
  • 分布式架构初识:为什么需要分布式
  • asp网站用ftp怎么替换图片办公室oa管理系统
  • 个性化的个人网站广州企业开办一网通
  • Transformer(一)---背景介绍及架构介绍
  • 【完整源码+数据集+部署教程】气动铣刀型号分类图像分割系统: yolov8-seg-C2f-SCConv
  • 【Android】强制使用 CPU 大核或超大核
  • 【算法竞赛学习笔记】基础概念篇:算法复杂度
  • SLA操作系统双因素认证实现Windows远程桌面OTP双因子安全登录—从零搭建企业级RDP安全加固体系
  • 现在主流的网站开发语言360房产网郑州官网
  • 石家庄哪个公司做网站好做外贸c2c网站有哪些
  • 伪路径约束
  • 新天力:以全链协同能力构筑食品容器行业领军优势
  • Markdown转换为Word:Pandoc模板使用指南
  • Cloudflare 开源 VibeSDK:开启“氛围编程”新时代的全栈 AI 应用生成平台
  • 汕头网站建设sagevis企业网站建设有什么好处
  • C语言趣味小游戏----猜数字小游戏
  • 多表关联对集中式数据库和分布式数据库系统冲击
  • Suifest 2025 活动速递
  • 交叉熵损失函数和负对数似然损失函数 KL散度
  • 坪地网站建设教程网站seo优化方法
  • 网站数据库多大合适成都小型软件开发公司
  • Gibbs采样:全面解析马尔可夫链蒙特卡洛的核心算法
  • 【开题答辩全过程】以 python的音乐网站为例,包含答辩的问题和答案
  • 二项式定理——力扣2221.数组的三角和