题目描述:
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: t is "ece" which its length is 3.
Example 2:
Input: "ccaabbb"
Output: 5
Explanation: t is "aabbb" which its length is 5.
滑动窗口解决,移动终点,保证窗口中最多只有两种字符,如果超过两种字符,移动起点。
class Solution {
public:
int lengthOfLongestSubstringTwoDistinct(string s) {
int n=s.size();
int i=0;
int j=0;
unordered_map<char,int> hash;
int max_length=0;
while(j<n)
{
if(hash.count(s[j])>0) hash[s[j]]++;
else
{
hash[s[j]]=1;
if(hash.size()>2)
{
while(hash.size()>2&&i<=j)
{
hash[s[i]]--;
if(hash[s[i]]==0) hash.erase(s[i]);
i++;
}
}
}
max_length=max(max_length,j-i+1);
j++;
}
return max_length;
}
};