每个字符最多出现两次的最长子字符串


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

子字符串

最大 长度。

示例 1:

输入: s = “bcbbbcba”

输出: 4

解释:

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

示例 2:

输入: s = “aaaa”

输出: 2

解释:

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

提示:

  • 2 <= s.length <= 100
  • s 仅由小写英文字母组成。
class Solution {
    public int maximumLengthSubstring(String s) {

        //左指针
        int left = 0;
        int[] temp = new int[26];

        //右指针
        int right = 0;

        //长度
        int length = 0;
        for(;right < s.length();right++){
            temp[s.charAt(right) - 'a']++;
            if(!judge(temp)){
                length = Math.max(right - left + 1,length);
                // System.out.println("print length : " + length + "; right = "+ right + "; left = "+ left);
            } else {
                temp[s.charAt(left) - 'a']--;
                left++;
                // System.out.println("print length : " + length + "; left = "+ left + "; right = "+ right);
            }
        }
        return length;
    }

    //判断是否最多出现两次
    private boolean judge(int[] temp){
        for(int i = 0; i < temp.length ;i++){
            if(temp[i] > 2){
                return true;
            }
        }
        return false;
    }

        
}

文章作者: 冯廷鑫
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 冯廷鑫 !
  目录