*给定一个字符串,找出其中不包含重复字符串的 最长子串 的长度 *
思路 滑动窗口
- right一直向右循环遍历字符串。
- left改变时刻和方法:right侧新增加的字符,在字符串s中从当前的left->right是否有与之相同的字符,若有则left的值指向相同字符的下一个位置。(删除掉与新加入字符相同字符及以前的部分)
/*
@function: 得到最新的left位置信息
@para1: 字符串
@para2: 当前的left
@para3:当前的right
@para4:新加入的字符
return : 最新的left位置
*/
int LeftPosition(char *s, int left, int right, char c)
{
int index = 0;
for( index = left; index < right; index++)
{
if(s[index] == c)
{
return index+1;
}
}
return left;
}
int lengthOfLongestSubstring(char * s)
{
int MaxLen = 0;
int left = 0, right = 0;
if(NULL == s)
return 0;
for(right=0; s[right]!='\0'; right++)
{
left = LeftPosition(s, left, right, s[right]);
if(right-left + 1 > MaxLen)
{
MaxLen = right-left + 1;
}
}
return MaxLen;
}
本文介绍了一种使用滑动窗口算法解决字符串问题的方法:如何找到一个字符串中最长的无重复字符子串的长度。通过不断移动左右边界,并在发现重复字符时调整左边界来实现这一目标。
783

被折叠的 条评论
为什么被折叠?



