给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
如:输入abcabcbb
输出3
因为无重复最长字符串是“abc”。
#include<stdio.h>
#include<string.h>
#define SIZE 10
int main(void)
{
//输入一个目标字符串
char a[SIZE]="abcabcbb";
//创建一个数组b用于接收子字符串长度
int b[SIZE];
int i,j,k;
for(i=0 ; a[i] ; i++){
//子字符串最短为一个字母,所以初始化b[i]=1 。每进行完一次循环没有break说明当前字符的前面没有与之相等的,b[i]++
for(b[i]=1,j=i+1 ; a[j] ; j++ , b[i]++){
// 当前字符为第k个,从第i个字符开始往后比较
for(k=i ; k<j ; k++){
if(a[k] == a[j]){
break;//如果相等,则退出循环
}
}
if(k<j){
break;//k<j说明上面个循环没有进行完(break了),所以就遇到了相等的字符,则以第i个字符开头的子字符串到达了最长,返回最外层循环
}
}
}
int max=b[0];
for(i=0 ; i<strlen(a) ; i++){
if(b[i]>max)
max=b[i];
}
printf("%d\n",max);
return 0;
}
第一次写博客,如有错误,请多多指教!