给定一个字符串 s
,请你找出其中不含有重复字符的 最长子串 的长度
思路:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int lengthOfLongestSubstring(char *s)
{
int ParentStrLen = strlen(s);
int len = 1; //父串不为0,字串长度至少为1
int count = 0;
if (ParentStrLen == 0)
{
return 0;
}
for (int i = 0; i < ParentStrLen; i++)
{
count = 1; //跳出两层内循环后,重置计数器
for (int j = i + 1; j < ParentStrLen; j++)
{
int tag = 1; //标记
//精髓:我想了半天没想到的,用i来刷新k的位置
for (int k = i; k < j; k++) //比较 i 和 j之间是否有相同元素,有则跳出
{
if (s[k] == s[j])
{
tag = 0;
break;
}
}
if (tag) //tag==1 说明最内层循环正常结束,有一个元素和所有的不同
{
count++;
if (len < count)
{
len = count;
}
}
else
{
break;
}
}
}
return len;
}
int main()
{
char *ch = "abcabcbb";
printf("%d\n",lengthOfLongestSubstring(ch));
system("pause");
return 0;
}