class Solution {
public:
int lengthOfLongestSubstringTwoDistinct(string s) {
if (s.length() < 2)
return s.length();
int i = 1;
char dict[2];
int len;
int maxlen;
// initia dict
dict[0] = s[0];
while (i < s.length() && s[i] == dict[0])
i++;
if (i == s.length())
return i;
dict[1] = s[i];
char cur = s[i];
int count = 1;
len = i + 1;
for (i++; i < s.length(); i++) {
if (s[i] != dict[0] && s[i] != dict[1]) {
dict[0] = s[i-1];
dict[1] = s[i];
maxlen = max(maxlen, len);
len = count + 1;
}
else {
len++;
}
if (cur == s[i])
count++;
else {
cur = s[i];
count = 1;
}
}
return max(len, maxlen);
}
};
[Leetcode] Longest Substring with At Most Two Distinct Characters
最新推荐文章于 2024-07-25 19:34:38 发布