/* 給定一個字符串,請你找出其中不含有重復字符的 最長子串的長度。 解題思路:滑動窗口的左右邊界是[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",n); }