Title:
给定一个字符串 s ,找出 至多 包含两个不同字符的最长子串 t ,并返回该子串的长度。
数据范围:
题目没说.
solution:
枚举r,维护一个最小的下标l,满足[l,r]内字符种类不超过2即可.
code:
class Solution {
public:
int lengthOfLongestSubstringTwoDistinct(string s) {
int n=s.size();
int ans=0;
int l=0;
int sum=0;
map<char,int>cnt;
for(int i=0;i<n;i++){
if(++cnt[s[i]]==1)sum++;
while(sum>2){
if(--cnt[s[l++]]==0)sum--;
}
ans=max(ans,i-l+1);
}
return ans;
}
};