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

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

题目

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

算法标签: 滑动窗口

思路

首先看题目要求, 要求子串中每一个字符出现的次数都不小于 k k k, 因此可以将答案视作一个集合, 可以按照子串拥有的字符类型数量进行分类, 分而治之

代码

#include <iostream>
#include <algorithm>
#include <cstring>
#include <map>using namespace std;class Solution {
public:int longestSubstring(string s, int k) {int n = s.size();int ans = 0;for (int i = 1; i <= 26; ++i) {int l = 0, r = 0;int cnt[26] = {0};//tmp代表窗口中字符出现次数大于等于k的字符数量int type_cnt = 0, tmp = 0;while (r < n) {if (type_cnt <= i) {int u = s[r] - 'a';if (cnt[u] == 0) type_cnt++;cnt[u]++;if (cnt[u] == k) tmp++;r++;}else {int u = s[l] - 'a';if (cnt[u] == k) tmp--;cnt[u]--;if (cnt[u] == 0) type_cnt--;l++;}if (type_cnt == i && tmp == i) ans = max(ans, r - l);}}return ans;}
};
http://www.xdnf.cn/news/180811.html

相关文章:

  • Qt从零开始(1)了解
  • Golang | 倒排索引Value的设计
  • Python爬虫实战:获取ya马逊最新销售飙升榜数据并做分析,为电商选品做参考
  • 【AI】MCP协议,AI界的USB接口
  • FastAPI系列06:FastAPI响应(Response)
  • leetcode--盛最多水的容器,接雨水
  • 数值分析、数值代数之追赶法
  • Linux课程五课---Linux进程认识1
  • MySQL----查询
  • 树莓派超全系列教程文档--(43)树莓派内核简介及更新
  • 机器学习基础——Seaborn使用
  • C++11
  • 自然语言处理之机器翻译:Statistical Machine Translation(SMT)的评估方法解析与创新实践
  • 小集合 VS 大集合:MySQL 去重计数性能优化
  • 常用第三方库:sqflite数据库应用
  • Python语言基础知识详解:数据类型及运算
  • 【MQ篇】RabbitMQ之消费失败重试!
  • 2、Linux操作系统下,ubuntu22.04版本安装搜狗输入法
  • <PLC><汇川><工控>汇川PLC实现光纤缠绕设备
  • ollama的若干实践
  • Step1X-Edit: A practical framework for general image editing
  • PaddleX的安装
  • Moment 在 JavaScript 中解析、校验、操作、显示日期和时间
  • web 开发中,前端部署更新后,该怎么通知用户刷新
  • 新闻数据接口开发指南:从多源聚合到NLP摘要生成
  • 一些可用于监控服务器响应时间稳定性的工具
  • 【神经网络与深度学习】端到端方法和多任务学习
  • 来自B站AIGC科技官的“vLLM简介“视频截图
  • 音频转base64
  • 基于c++的LCA倍增法实现