题目
提示:
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;
}
};