/*
给定一个字符串s
找出不含有重复字符的 最长 子串
---------------------------------
思路:遍历字符串,找到重复的字符停止遍历并记录子串长度
继续向下遍历,重复上面的内容(找到重复的字符停止遍历并记录最大子串长度)
直至'\0'结束遍历,返回最大子串长度
*/
#include<stdio.h>
#include<string.h>
int lengthOfLongestSubstring(char *s)
{
int len = 0;
if(strlen(s) == 1)
{
return 1;
}
for(int i = 0; i < strlen(s); i++)
{
//printf("%d\n", strlen(s));
char arr[1024] = {0};//新的数组里面存放子串
memset(arr, 0, 1024);
int index = 0;
int len_now = 0;
arr[index++] = s[i];
for(int j = i+1; j < strlen(s); j++)
{
arr[index++] = s[j];
for(int a = 0; a < j-i; a++)
//遍历子串里是否有重复,与之前传进arr里的每一个字符比较
//无重复跳到j的循环,继续需增加一个s[j]到arr里
//再让新的s[j]与之前加入arr的每一个老s[j]对比
{
if(s[j] == arr[a])
{
len_now = j - i;
//printf("%d\n", len_now);
j = strlen(s);
break;
}
else
{
len_now = strlen(arr);
}
}
}
if(len_now > len)
{
len = len_now;
}//最大长度
}
return len;
}
int main()
{
int len = lengthOfLongestSubstring(" ");
printf("%d\n", len);
return 0;
}
力扣刷题笔记(3)
最新推荐文章于 2024-11-06 19:55:44 发布