当前位置: 首页 > 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.dtcms.com/a/276986.html

相关文章:

  • 维基艺术图片: 数据标注 (2)
  • C语言基础教程(002):变量介绍
  • 一文读懂现代卷积神经网络—使用块的网络(VGG)
  • 基于Prompt结构的语校解析:3H日本语学校信息建模实录(4/500)
  • 08.如何正确关闭文件
  • 数智管理学(三十三)
  • 归并排序递归法和非递归法的简单简单介绍
  • Gin框架统一响应与中间件机制学习笔记
  • DH(Denavit–Hartenberg)矩阵
  • KL散度:信息差异的量化标尺 | 从概率分布对齐到模型优化的核心度量
  • 使用QtTest
  • 反激变换器设计全流程(一)——电路拓扑及工作流程
  • Chrome v109.0.5414.168 绿色便携版 Windows 7/2012R2 最终版 下载
  • 开发语言的优劣势对比及主要应用领域分析
  • GROW领导力模型
  • Unity物理系统由浅入深第四节:物理约束求解与稳定性
  • 【算法分析与设计】研究生第一次算法作业latex源码+pdf
  • docker容器高级管理-dockerfile创建镜像
  • 飞算 JavaAI 智能编程助手:颠覆编程旧模式,重构开发生态
  • Java小白-线程 vs 虚拟线程,Java并发的新旧对决
  • LeetCode--44.通配符匹配
  • Java4种设计模式详解(单例模式、工厂模式、适配器模式、代理模式)
  • Linux的 iproute2 配置:以太网(Ethernet)、绑定(Bond)、虚拟局域网(VLAN)、网桥(Bridge)笔记250713
  • 文心一言大模型4.5系列开源测评
  • 【Leetcode】2410. 运动员和训练师的最大匹配数
  • 预处理器完整功能介绍和示例演示(LESS/SCSS)
  • 笔记-极客-DDD实战-基于DDD的微服务拆分与设计
  • MongoDB数据基本介绍
  • 决策树的相关理论学习
  • [论文阅读] 软件工程 | 首个德语软件工程情感分析黄金标准数据集:构建与价值解析