深圳住房和建设局网站富士锦园/开平网站设计
描述
给定一个字符串,请找出其中无重复字符的最长子字符串。
样例
样例 1:
输入: "abcabcbb"
输出: 3
解释: 最长子串是 "abc".
样例 2:
输入: "bbbbb"
输出: 1
解释: 最长子串是 "b".
挑战
O(n) 时间复杂度
int lengthOfLongestSubstring(string &s) {
// write your code here
map<char, int> smap;
int start = 0;
int end = 0;
int ssize = s.size();
if (ssize == 1)
{
return 1;
}
int minstart = 0;
int minSize = 0;
map<char, int> stmap;
while (start < ssize)
{
if (end - start > minSize)
{
minstart = start;
minSize = end - start;
}
if (end == ssize)
{
start++;
end = start;
continue;
}
if (smap.count(s[end]))
{
start=smap[s[end]]+1;
end = start;
smap = stmap;
}
else
{
smap[s[end]] = end;
end++;
}
}
return minSize;
}