给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
思路:
滑动窗口 哈希
int lengthOfLongestSubstring(char * s){
int len =strlen(s);
if(len<2){
return len;
}
int maxlen=1,left=0,right=0;
bool hs[128]={false};//定义一个数组来记录字符是否重复出现
while(left<len&&right<len){
if(hs[s[right]]==false){//没有重复出现
hs[s[right]]=true;
int currlen=right-left+1;
if(currlen>maxlen){
maxlen=currlen;
}
right++;
}else{//如果重复出现则右边界一直不动,左边界右移,直到重复出现的字符消失
hs[s[left]]=false;
left++;
}
}
return maxlen;
}