class Solution {
public:
int longestSubstringWithoutDuplication(string s) {
//思路,利用双指针i,j i指向当前最大字字符串第一个元素,j指向当前字符串最后一个位置
//每次j后移以为,如果j后移后的元素在当前子串中未出现则j继续后移,如果j出现过,i后移
//至未出现j的元素位置为止
unordered_map<char,int> hash;
int res = 0;
for(int i = 0,j = 0;j < s.size();++j){
hash[s[j]]++;
while(hash[s[j]] > 1) hash[s[i++]]--;
res = max(res,j - i + 1);
}
return res;
}
};