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

LeetCode 1156.单字符重复子串的最大长度

如果字符串中的所有字符都相同,那么这个字符串是单字符重复的字符串。

给你一个字符串 text,你只能交换其中两个字符一次或者什么都不做,然后得到一些单字符重复的子串。返回其中最长的子串的长度。

示例 1:

输入:text = “ababa”
输出:3
示例 2:

输入:text = “aaabaaa”
输出:6
示例 3:

输入:text = “aaabbaaa”
输出:4
示例 4:

输入:text = “aaaaa”
输出:5
示例 5:

输入:text = “abcdef”
输出:1

提示:

1 <= text.length <= 20000
text 仅由小写英文字母组成。

滑动窗口,保证窗口内最多有两种字符,有两种字符时,保证一种字符的数量为1。
当窗口内有两种字符时,如果窗口大小为winSize,其中一种字符a的数量为1,另一种字符b的数量就是n-1
如果数量为n-1的字符a在窗口外还有字符,则整个窗口都是合法的子串,因为可以把窗口外的一个字符a和窗口内的字符b交换位置;否则窗口内合法的子串长度就是n-1,因为可以自由交换窗口内的字符b到窗口两端点。
找出最大的窗口内合法子串长度即可。

class Solution {
public:int maxRepOpt1(string text) {int cnt[26];for (char c : text) {++cnt[c - 'a'];}int left = 0;int ans = 0;map<char, int> cur;for (int i = 0; i < text.size(); ++i) {++cur[text[i]];while (cur.size() == 3 || cur.size() == 2 &&cur.rbegin()->second >= 2 && cur.begin()->second >= 2) {if (--cur[text[left]] == 0) {cur.erase(text[left]);}++left;}char more = cur.rbegin()->first;if (cur.begin()->second > cur.rbegin()->second) {more = cur.begin()->first;}int len = min(cnt[more - 'a'], i - left + 1);ans = max(ans, len);}return ans;}
};

如果text的长度为n,其中的字符种类数为m,则此算法时间复杂度为O(n),空间复杂度为O(m),本题m为26。

http://www.lryc.cn/news/587118.html

相关文章:

  • 力扣 hot100 Day43
  • OSPF与BGP的联动特性
  • 【设计模式】备忘录模式(标记(Token)模式)
  • 面向对象设计模式详解
  • Flink学习笔记:整体架构
  • NO.4数据结构数组和矩阵|一维数组|二维数组|对称矩阵|三角矩阵|三对角矩阵|稀疏矩阵
  • 【Docker基础】Dockerfile指令速览:环境与元数据指令详解
  • 【保姆级图文详解】Spring AI 中的工具调用原理解析,工具开发:文件操作、联网搜索、网页抓取、资源下载、PDF生成、工具集中注册
  • leetGPU解题笔记(1)
  • 【CMake】CMake创建、安装、使用静态库和动态库
  • LeetCode|Day8|1047. 删除字符串中的所有相邻重复项|Python刷题笔记
  • java.net.InetAddress
  • 嵌入式 Linux开发环境构建之安装 SSH 软件
  • MongoDB数据基本介绍
  • 小白成长之路-LVS
  • 【VSCode+LaTeX】科研写作环境搭建
  • C语言的一些随笔
  • 面试150 填充每个节点的下一个右侧节点指针Ⅱ
  • 006_测试评估与安全实践
  • 2025上海市“星光计划“信息安全管理与评估赛项二三阶段任务书
  • RAG篇(RAG的流程)
  • STM32-第六节-TIM定时器-2(输出比较)
  • Linux驱动开发2:字符设备驱动
  • iOS UI视图面试相关
  • 哪些行业的“反内卷”前景更好?
  • ADB 调试日志全攻略:如何开启与关闭 `ADB_TRACE` 日志
  • 【Datawhale夏令营】用AI做带货视频评论分析
  • [附源码+数据库+毕业论文+答辩PPT+部署教程+配套软件]基于SpringBoot+MyBatis+MySQL+Maven+Vue实现的交流互动管理系统
  • 每天学一个八股(二)——详解HashMap
  • 26-计组-指令执行过程