/* 给定一个字符串,请你找出其中不含有重复字符的 最长子串的长度。 解题思路:滑动窗口的左右边界是[i,j),窗口长度curlen,用k来遍历窗口的值是否和下一个待添加的数重复,若重复,则左窗口移到k+1的位置,并且更新maxlen和curlen */ #include<stdio.h> #include<math.h> #include<malloc.h> #include<string.h> int lengthOfLongestSubstring(char * s){ int curlen=0,i,j,k,len=strlen(s),maxlen=0; for(i=0,j=0;j<len&&(len-i)>maxlen;j++){ curlen++; for(k=i;k<=j;k++){ if(s[k]==s[j+1]){ if(curlen>maxlen){ maxlen=curlen; } i=k+1; curlen=j-i+1; break; } } } if(curlen>maxlen){ maxlen=curlen; } return maxlen; } main() { char a[100]; gets(a); int n; n = lengthOfLongestSubstring(a); printf("%d ",n); }