240
笔下虽有千言,胸中实无一策

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;
    }
};
posted @ 2020-09-18 06:24  CasperWin  阅读(72)  评论(0编辑  收藏  举报