题目

提示:
0 <= s.length <= 5 * 104
s 由英文字母、数字、符号和空格组成
题解
- 动态规划
加上最后一位是否有重复
以s为结尾的最长不重复字符串 - 滑动窗口+哈希表
以a开头的最长不重复字符串
代码
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int n=s.size();
int res=1,tmp=1;
int l=0,r=0,flag=0;
if(n==0)
return 0;
if(n==1)
return 1;
for(int i=1;i<n;i++)
{
r=i;
for(r=r-1;l<=r;r--)
{
if(s[r]==s[i])
{
l=r+1;
flag=1;
break;
}
}
if(flag==0)//无重复
tmp=tmp+1;
else
{
tmp=i-l+1;
}
res=max(res,tmp);
}
return res;
}
};


本文详细介绍了LeetCode第3题无重复字符的最长子串的解决方案,主要使用动态规划和滑动窗口的方法。通过遍历字符串并利用哈希表检查字符重复性,找到以每个字符开头的最长不重复子串,最终返回最长长度。代码中展示了C++实现的详细过程。
685

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



