给定一个字符串,找出不含有重复字符的最长子串的长度。
示例:
给定 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);
}
};