Longest Substring with At Most Two Distinct Characters

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

For example, Given s = “eceba”,

T is "ece" which its length is 3.

和minimum window一樣的題。一遍過。

    public int lengthOfLongestSubstringTwoDistinct(String s) {
        int max = 0;
        if (s.isEmpty()) {
            return max;
        }
        Map<Character, Integer> map = new HashMap<Character, Integer>();
        int start = 0;
        int cur = 0;
        while (cur < s.length()) {
            char c = s.charAt(cur);
            if (map.containsKey(c)) {
                map.put(c, map.get(c)+1);
                max = Math.max(max, cur-start+1);
            } else {
                while (map.size() > 1) {
                    if (map.get(s.charAt(start)).equals(1)) {
                        map.remove(s.charAt(start));
                    } else {
                        map.put(s.charAt(start), map.get(s.charAt(start))-1);
                    }
                    start++;
                }
                map.put(c, 1);
                max = Math.max(max, cur-start+1);
            }
            cur++;
        }
        return max;
    }


發佈了172 篇原創文章 · 獲贊 1 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章