**给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。
如:输入abcabcbb
输出3
因为无重复最长字符串是“abc”
第一次看见这个问题时网上查找发现没有竟然没有C语言实现的代码
于是自己写了代码以及思路放到这里
思路:
使用三个for循环,第一个控制本次循环数组的开头;
第二个for循环控制本此循环数组的结尾
第三个for循环找到本此循环的不重复子字符串的长度并保存
直至将整个字符串便利后输出最大值
实现:
#include<stdio.h>
#include<string.h>
int main ()
{
char str[255];
gets(str);
int length=strlen(str);
int max=0;
int i,j,k,n;
for (i=0;i<length;i++)//字符串数组循环的头
{
for (j=i+1;j<length;j++)//字符串数组循环的尾
{
for (k=i;k<j;k++)//从本次字符串数组循环的头开始判断并找到相同字符时停止
{
if (str[k]==str[j])
{
n=j;//记录尾的值
j=length;
k=j;//和上条语句一起是本次循环停止
}
}
if (n-i>max)//记录最大的长度
max=n-i;
}
}
if (max == 0)//如果无重复max=length
max = length;
printf("%d\n",max);
return 0;
}