leetcode 3090. 每个字符最多出现两次的最长子字符串 简单

给你一个字符串 s ,请找出满足每个字符最多出现两次的最长子字符串,并返回该子字符串的最大长度。

示例 1:

输入: s = "bcbbbcba"

输出: 4

解释:

以下子字符串长度为 4,并且每个字符最多出现两次:"bcbb++bcba++"

示例 2:

输入: s = "aaaa"

输出: 2

解释:

以下子字符串长度为 2,并且每个字符最多出现两次:"++aa++aa"

提示:

  • 2 <= s.length <= 100
  • s 仅由小写英文字母组成。

分析:双指针,一个指针 l 指向位置 0,另一位代表当前遍历 s 的最右位置 i,同时用一个 cnt 数组记录当前位置 i 的字母出现次数,当 si 的出现次数为 3 时,从 l 开始依次减少 sl 的出现次数,直到 si 的出现次数等于 2,再继续遍历完 s。返回出现的最大长度即可。

cpp 复制代码
class Solution {
public:
    int maximumLengthSubstring(string s) {
        int ans=1,l=0,cnt[30]={0};
        cnt[s[0]-'a']++;
        for(int i=1;s[i];++i)
        {
            int index=s[i]-'a';
            cnt[index]++;
            while(cnt[index]>2)
                cnt[s[l++]-'a']--;
            ans=max(i-l+1,ans);
        }
        return ans;
    }
};
相关推荐
Navigator_Z15 分钟前
LeetCode //C++ - 1226. The Dining Philosophers
c语言·算法·leetcode
CoderYanger4 小时前
A.每日一题:1140. 石子游戏 II
java·程序人生·算法·leetcode·游戏·职场和发展·深度优先
sheeta19987 小时前
LeetCode 每日一题笔记 日期:2026.09.02 题目:3875.构造奇偶一致的数组 I
笔记·算法·leetcode
退休倒计时8 小时前
【每日五题】leetcode TypeScript
算法·leetcode·职场和发展·typescript
心抵鹊8 小时前
力扣每日一题:计算右侧小于当前元素的个数(hard)
算法·leetcode
鹿角片ljp8 小时前
LeetCode 142:环形链表 II |HashSet 保底解 + Floyd 快慢指针找环入口
算法·leetcode·链表
a187927218318 小时前
【算法】回溯算法(一):从一道 IP 题到万能模板
算法·leetcode·go·回溯·leetcode93·ip复原·算法讲解
鹿角片ljp8 小时前
LeetCode 19:删除链表的倒数第 N 个节点复盘| dummy + 快慢指针
算法·leetcode·链表
玖玥拾9 小时前
LeetCode 290 单词规律
算法·leetcode·哈希算法·散列表
旖旎夜光9 小时前
LeetCode 525:连续数组(前缀和) —— 题解
数据结构·c++·算法·leetcode·前缀和