leetcode系列 无重复字符的最长字串 C语言
题目
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/add-two-numbers
大概思路
记录每一个字符第一次出现的位置,当第二次出现时用当前位置减去第一次出现的位置,比较得出最长的子串长度。输出。注意:要用字符串的长度减去最后出现重复字符的位置,否则将考虑少一种情况。
代码
int lengthOfLongestSubstring(char * s){
char max=0,len=0,lenthstr=0,flag[128]={0},strflag=0;
for(int i=0;s[i]!='\0';i++)
{
if(flag[s[i]]>strflag)
{
len=i-strflag;
strflag=flag[s[i]];
if(len>max)
max=len;
}
flag[s[i]]=i+1;
}
lenthstr=strlen(s);
len=lenthstr-strflag;
if(len>max)
max=len;
return max;
}
|