Longest Substring with At Most Two Distinct Characters

Given a string s , find the length of the longest substring t that contains at most 2 distinct characters.

Example 1:
Input: "eceba"
Output: 3
Explanation: tis "ece" which its length is 3.
Example 2:
Input: "ccaabbb"
Output: 5
Explanation: tis "aabbb" which its length is 5.

  • Code
 public int lengthOfLongestSubstringTwoDistinct(String s) {
        int res = 0, left = 0;
        HashMap<Character, Integer> hash = new HashMap<Character, Integer>();
        for (int i = 0; i < s.length(); i++) {
            Character tmp = s.charAt(i);
            hash.put(tmp, hash.getOrDefault(tmp, 0) + 1);
            while (hash.size() > 2) {
                Character leftChar = s.charAt(left);
                int cnt = hash.get(leftChar) - 1;

                hash.put(leftChar, cnt);

                if (cnt == 0) {
                    hash.remove(leftChar);
                }
                left++;
            }
            res = Math.max(res, i - left + 1);
        }
        return res;
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容