整体思路:
一个结点维护一个int,代表到当前位置的最大无重复字符串长度;
维护一个string,用来存储当前位置字符向前算最长的无重复字符串
public:
class Solution {
public:
int lengthOfLongestSubstring(string str)
{
if(str==" ")
return 1;
vector<int> vec(str.length());
vec[0]=1;
string s(str,0,1);
for(int i=1;i<str.length();i++)
{
int pos,num_t=vec[i-1];
string str_t;
if((pos=s.find(str[i]))==-1)//找不到
{
str_t=s+str[i];
}
else
{
str_t=s.substr(pos+1)+str[i];
}
if(str_t.length()>num_t)
num_t=str_t.length();
s=str_t;
vec[i]=num_t;
}
return vec[str.length()-1];
}
};
};