给定一个字符串,找出不含有重复字符的最长子串的长度。
示例:
给定 abcabcbb ,没有重复字符的最长子串是 abc ,那么长度就是3。
给定 bbbbb,最长的子串就是 b ,长度是1。
给定 pwwkew ,最长子串是 wke ,长度是3。
请注意答案必须是一个子串,pwke 是 子序列 而不是子串。
class Solution {
public:
int lengthOfLongestSubstring(string s) {
map<char, int> last;
int start = 0;
int maxLen = 0;
int len = s.length();
for (int i = 0; i < len; i++) {
if (last.count(s[i]) && last[s[i]] >= start) {
maxLen = maxLen > (i - start) ? maxLen : (i - start);
start = last[s[i]] + 1;
}
last[s[i]] = i;
}
return maxLen > (len - start) ? maxLen : (len - start);
}
};

本文介绍了一种求解给定字符串中不含有重复字符的最长子串长度的方法。通过使用滑动窗口技术和哈希映射,实现了高效查找。文章包含示例说明及C++实现代码。
898

被折叠的 条评论
为什么被折叠?



