题目大意
给你一个字符串 sss 长度为 nnn,字符串中只包含 111,222,333。
题意分析
找到一个最短的区间,区间内要同时出现,111,222,333。
解题思路
对于不能改变顺序的字符串,要想到如何遍历区间,减少遍历次数。
我们设区间为 [L,R][L,R][L,R],始终保证区间是最短区间,我们可以用双指针来做。
* 初始化 L=0,R=0L = 0,R = 0L=0,R=0,一开始没有选择任何区间
* 拓展区间 R+1R+1R+1,记录当前区间内 111,222,333,出现的次数。
* 在区间满足的时候,不断缩减区间 L+1L+1L+1,同时更新111,222,333,出现的次数。
时间复杂度分析
区间中 RRR 最多拓展到 nnn,LLL 最多缩减到 nnn,复杂度为:O(2×n)O(2 \times n)O(2×n)。
代码演示