给定一个字符串,请找出其中无重复字符的最长子字符串。
样例
样例 1:
输入: "abcabcbb"
输出: 3
解释: 最长子串是 "abc".
样例 2:
输入: "bbbbb"
输出: 1
解释: 最长子串是 "b".
挑战
O(n) 时间复杂度
class Solution {
public:
/**
* @param s: a string
* @return: an integer
*/
int lengthOfLongestSubstring(string &s)
{
// write your code here
if(s == "")
return 0;
int left = 0, right = 0;
unordered_map<char, int> window;
int res;
while(right < s.size())
{
char c1 = s[right];
window[c1]++;
right++;
while(window[c1] > 1)
{
char c2 = s[left];
window[c2]--;
left++;
}
res = max(res, right - left);
}
return res;
}
};