方法一: 用一个int a[256] 标记每一个字符最后一次出现的位置,将数组a的各个变量初始化位-1。
代码如下:
class Solution {
public:
int lengthOfLongestSubstring(string s)
{
int a[256];
memset(a, -1, sizeof(a));
int maxlen = 0;
int start = 0;
int i;
for(i=0; i<s.size(); i++)
{
if(a[s[i]] == -1)
{
a[s[i]] = i;
}
else
{
if(i-start > maxlen)
maxlen = i-start;
start = a[s[i]]+1>start?(a[s[i]]+1):start;
a[s[i]] = i;
}
}
if(i-start > maxlen)
maxlen = i-start;
return maxlen;
}
};