题目地址:Longest Substring with At Most Two Distinct Characters - LeetCode
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.
这道题目是hard难度的,题目的意思很简单,就是找到具有最多两个不同字符的最长子串的长度。
看到题目会感觉O(n)的时间复杂度应该能做出这道题目。
在写了大约20分钟代码后,Python解法出来了:
class Solution:
def lengthOfLongestSubstringTwoDistinct(self, s: str) -> int:
count = 0
p = {
}
l = {
}
for now in range(0, len(s)):
i = s[now]
p[i] = now
if len(l) < 2 and i not in l:
l[i] = 1
elif i in l:
l[i] += 1
else:
if count < sum(l.values(