题目描述:
思路:
定义两个指针l ,r,r负责不停的右移,并将出现字母次数+1,然后检查次数大于1的,如果是就收缩l 并将扫过的字母-1,直到r指针对应的字母次数小于等于1,记录当前[l,r]的距离即r-l+1,并记录最大值,循环结束后就可求得无重复字符的最大字串。
class Solution {
public:
int hashmap[50000];
int lengthOfLongestSubstring(string s) {
int res=0;
for(int l=0 , r=0;r<s.size(); r++){
hashmap[s[r]]++;
while(hashmap[s[r]]>1){
hashmap[s[l]]--;
l++;
}
res=max(res,r-l+1);
}
return res;
}
};