You are given a string s, return the length of the longest substring that contains at most two distinct characters.
Note: A substring is a contiguous non-empty sequence of characters within a string.
Example 1:
Input: s = "eceba"
Output: 3Explanation: The substring is "ece" which its length is 3.
Example 2:
Input: s = "ccaabbb"
Output: 5Explanation: The substring is "aabbb" which its length is 5.
Constraints:
0 <= s.length <= 1,00,000s consists of English letters.class Solution:
def lengthOfLongestSubstringTwoDistinct(self, s: str) -> int:
res, n = 0, len(s)
for i in range(n):
seen = set()
cnt = curLen = 0
for j in range(i, n):
seen.add(s[j])
if len(seen) > 2:
break
curLen += 1
res = max(res, curLen)
return resclass Solution:
def lengthOfLongestSubstringTwoDistinct(self, s: str) -> int:
res, n = 0, len(s)
seen = defaultdict(int)
j = 0
for i in range(n):
seen[s[i]] += 1
while len(seen) > 2:
seen[s[j]] -= 1
if seen[s[j]] == 0:
seen.pop(s[j])
j += 1
res = max(res, i - j + 1)
return resclass Solution:
def lengthOfLongestSubstringTwoDistinct(self, s: str) -> int:
n = len(s)
count = defaultdict(int)
j = 0
for i in range(n):
count[s[i]] += 1
if len(count) > 2:
count[s[j]] -= 1
if count[s[j]] == 0:
count.pop(s[j])
j += 1
return i - j + 1