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]_最长的不包含重复字符的子字符串