30 Day Challenge Day 10 | Leetcode 3. Longest Substring Without Repeating Characters

题解

双指针法

用一个哈希表或者set记录当前子字符串中出现的字符,一旦有重复的字符进来,就去掉首字母,知道没有重复。

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        int max_len = 0;
        set<char> table;
        
        for(int i = 0; i < s.size(); i++) {
            int j = i + table.size();
            while(j < s.size() && !table.count(s[j])) {
                table.insert(s[j]);
                j++;
            }
            if(j-i > max_len) {
                max_len = j-i;
            }
            table.erase(s[i]);
        }
        
        return max_len;
    }
};
原文地址:https://www.cnblogs.com/casperwin/p/13688967.html