LeetCode 159 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.
public int lengthOfLongestSubstringTwoDistinct(String s) {
    if (s == null || s.length() == 0) {
        return 0;
    }
     
    char[] sArr = s.toCharArray();
     
    int[] hash = new int[256];
     
    int l = 0, count = 0, result = 1;
    for (int r = 0; r < sArr.length; ++r) {
        hash[sArr[r]]++;
         
        if (hash[sArr[r]] == 1) {
            count++;
        }
         
        while (count > 2) {
            hash[sArr[l]]--;
 
            if (hash[sArr[l]] == 0) {
                count--;
            }
 
            l++;
        }
         
        result = Math.max(result, r - l + 1);
    }
     
    return result;
}

 

上一篇:Windows函数转发器


下一篇:[leetcode 周赛 159] 1235 规划兼职工作