输入输出示例 1:
输入: s = “abcabcbb”
输出: 3
解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。
输入输出示例 2:
输入: s = “bbbbb”
输出: 1
解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。
输入输出示例 3:
输入: s = “pwwkew”
输出: 3
解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。
#include <stdio.h>
#include <string.h>
int maxLength(char * s){
int i,j,max=0;
int left=0,right=0;
int same=0;
int len=strlen(s);
for(i=0;i<len;i++){
if(left<right){
same=0;
for(j=left;j<right;j++){
if(s[j]==s[right]){
//若有重复字符,将same置1并跳出循环;
same=1;
break;
}
}
//若有重复字符将left右移
if(same==1){
left=j+1;
}
}
max=max<(right-left+1)?(right-left+1):max;
right++;//right右移继续判断
}
return max;
}
int main(){
char s[20];
gets(s);
char *p = s;
printf("%d",maxLength(s));
}
输出结果示例: