LeetCode 159. The longest substring containing at most two different characters (taken by ruler)

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;
    }
};

Guess you like

Origin blog.csdn.net/weixin_44178736/article/details/113967573