AlgoMooc
← 返回题库

K0100. 最多两种字符最长子串

中等通过率 86% · 提交 7 · 通过 6
滑动窗口哈希表双指针

在小慕负责的代码仓库中,有一行由不同模块标识符组成的古老配置文件。每个连续的模块段都承载着不同级别的调用依赖。 小慕需要从整行配置序列中,找出一段连续的区间,使得这段区间中至多只出现1种或2种不同的标识符。这段区间越长,能够复用的功能就越稳定。 现在给定整行配置序列,请你求出满足条件的最长长度。 这里的“子串”指的是序列中的一段连续区间。 如果一段子串中不同标识符的种类数不超过`2`,那么它就是合法子串。

提示:带虚线的词点一下有通俗解释。

输入描述

输入一行,一个字符串`rune`,表示魔纹序列。 长度不超过`10^5`.

输出描述

输出一个整数,表示只包含1种或2种不同字符的最长连续子串长度。

示例

示例 1

输入

xabba

输出

4

说明:最长合法子串为`abba`,其中只包含`a`和`b`两种字符,长度为`4`。 整个字符串`xabba`包含`x`、`a`、`b`三种不同字符,因此不合法。

示例 2

输入

mmmmm

输出

5

说明:整个字符串`mmmmm`只包含`m`这一种字符,因此整段都是合法子串,长度为`5`。

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解(训练营专属)

登录后查看题目图解

题目图解为训练营学员专属内容,请先登录。

微信扫码登录还不是训练营学员?了解训练营 →
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「最多两种字符最长子串」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。