int lengthOfLongestSubstring(char* s ) {
// write code here
int len=strlen(s);
int i=-1;
int j;
int end[128];
int res=0;
int templen=0;
for(int i=0;i<len;i++){
end[(int)s[i]]=-1;
}
//int max=0;
for(int j=0;j<len;j++){
/*
i记录上一次字符串的开始位置的前一个
计算每次的字符串长度:
min(当前字符与上一次该字符出现的位置的距离>当前位置-i)
一定要记得修改i的值和字符最后一次出现的位置
*/
//与上一个该字符距离
if(j-end[(int)s[j]]>j-i){
templen=j-i;
}
else{
templen=j-end[(int)s[j]];
i=end[(int)s[j]];
}
//别忘了
end[(int)s[j]]=j;
res=res>templen?res:templen;
}
return res;
}