### 159. Longest Substring with At Most Two Distinct Characters

题目： 
<https://leetcode.com/problems/longest-substring-with-at-most-two-distinct-characters/>


难度 : Hard



```python
class Solution(object):
    def lengthOfLongestSubstringTwoDistinct(self, s):
        """
        :type s: str
        :rtype: int
        """
        maps = {}
        begin, end, counter, length = 0, 0, 0, 0
        while end < len(s):
            maps[s[end]] = maps.get(s[end], 0) + 1
            if maps[s[end]] == 1:
                counter += 1
            end += 1   # end 永远指向下一个待处理的字符
            while counter > 2:
                maps[s[begin]] -= 1
                if maps[s[begin]] == 0:
                    counter -= 1
                begin += 1
            length = max(length, end - begin) # 因此这里是```end - begin```而不是```end - begin + 1```
        return length
```
