最长的无重复子串

1. LeetCode 3: Longest Substring Without Repeating Characters

2. 描述:

给定一个字符串,找出没有重复字符的最长子串

3. 示例1:

给定“abcabcbb”,结果为“abc”,返回3; 给定“bbbb”,结果为“b”,返回值为1;

给定“pwwkew”,结果为“wke”,返回值为3; 注意结果必须为子字符串。

4. 解决方案:

int lengthOfLongestSubstring(string s) {
    int max_len = 0;
    unordered_map<char,int> chars;
    for(int left = 0, right = 0; right < s.length(); right++){
        //如果遇到已经出现过的字符,则更新左指针
        if(chars.find(s[right]) != chars.end()){
            left = max(left, chars[s[right]] + 1);
        }
        chars[s[right]] = right;
        max_len = max(max_len, right-left + 1);
    }
    return max_len;
}
Table of Contents