以下是源自大佬的代码,本废物用了2个小时终于看明白是啥意思了。分享出来
int lengthOfLongestSubstring(char * s){
int i, j = 0, count = 0, max = 0, index[128] = {0}, start = 0;
//i是遍历数组的,j没用到,count用来计数每个没有重复字符串的长度,
//max用来标记count的最大值,start用来标记没有重复字符的字符串的第一个位置
//index用来标记字符出现的位置的下一个位置,
for(i=0;s[i]!='\0';i++) //正常遍历
{
if(index[s[i]]>start) //index用来储存出现重复字符时//出现重复进入这里
{ //子串起始下标应移动到的地方
count = i-start;//统计当前不重复字符个数
if(count>max)
{
max = count;
}
start = index[s[i]];//初始位置开始后移!!!
}
index[s[i]] = i+1;//这一步是灵魂,存储每个不重复字符的下一个位置,
//当后面再次出现该字符时,存储标记赋值给start,之后存储当前重复字符的
//下一个位置
}
count = i-start;//最后一次计数与最大计数的比较
return count>max?count:max;
}
作者:wu-sheng-23
链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/solution/cyu-yan-shuang-yi-bai-by-wu-sheng-23/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。