LeetCode 3 Longest Substring Without Repeating Characters
Given a string s, find the length of the longest substring without repeating characters.
Solution
求最长的不重复子串。我们利用左右两个指针来模拟端点,然后用 \(set\) 来记录出现过的字符。当出现重复的字符时, 我们需要回退到上一个出现该字符的位置, 用 \(set.erase()\)即可
点击查看代码
class Solution {
private:
    int l,r;
    int ans = 1;
    set<char> S;
public:
    int lengthOfLongestSubstring(string s) {
        int n = s.length();
        if(s=="")return 0;
        if(n==1)return 1;
        l=0;
        for(r=0;r<n;r++){
            if(S.find(s[r])==S.end()){
                S.insert(s[r]);ans=max(ans,r-l+1);
            }
            else{
                // remove
                while(l!=r && s[l]!=s[r]){
                    S.erase(s[l]);l++;
                }
                S.erase(s[l]);l++;
                S.insert(s[r]);
                ans=max(ans,r-l+1);
            }
        }
        return ans;
    }
};
 
                     
                    
                 
                    
                 
 
         
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号