class Solution {
public:
int lengthOfLongestSubstring(string s) {
int L=s.size();
int num=0;
int max=0;
int tab[300];
int h=0,t=0, h_2=0;
fill(tab,tab+300,-1);
tab[s[h]-NULL]=h;
// if (L==1)
// return 1;
while (t<L) {
if(tab[s[t]-NULL]==-1 || h==t)
{
tab[s[t]-NULL]=t;
if (t-h+1>num)
num=t-h+1;
t++;
}
else{
if (t-h>num)
num=t-h;
h_2=h;
h=tab[s[t]-NULL]+1;//找到非重复的头
for (int i=h_2;i<=tab[s[t]-NULL];i++)
tab[s[i]-NULL]=-1;
tab[s[h]-NULL]=h;
}
}
return num;
}
};