c_cpp 最长的子字符串,不重复字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 最长的子字符串,不重复字符相关的知识,希望对你有一定的参考价值。


string longest_substring_without_repeating_chars(const string& s) {
    if(s.empty()) return "";
    int N = s.size();
    
    unordered_map<char, int> hash;
    int i = 0, start = 0;
    int max_len = 1, head = 0;
    while(i < N) {
        char c = s[i];
        if(hash.find(c) == hash.end()) {
            hash[c] = i;
        } else {
            start = hash[c]+1;
            hash[c] = i;
        }
        if(max_len < i - start + 1) {
            head = start;
            max_len = i - start + 1;
        }
        i++;
    }
    return s.substr(head, max_len);
}

以上是关于c_cpp 最长的子字符串,不重复字符的主要内容,如果未能解决你的问题,请参考以下文章

每日一题最长无重复子数组最长不含重复字符的子字符串

每日一题最长无重复子数组最长不含重复字符的子字符串

新增5 最长不含重复字符的子字符串

剑指 Offer 48. 最长不含重复字符的子字符串

剑指offer:最长不含重复字符的子字符串

剑指[48]_最长的不包含重复字符的子字符串