Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for "abcabcbb" is "abc", which the length is 3. For "bbbbb" the longest substring is "b", with the length of 1.
class Solution {
public:
int lengthOfLongestSubstring(string s)
{
if(s.size() == 0)
return 0;
int start = 0;
int maxlen = 1;
int flag[256];
memset(flag,-1,sizeof(int)*256);
for(int i = 0; i < s.size(); i++)
{
if(flag[s[i]] >= start)
{
maxlen = maxlen > i - start? maxlen : i - start;
start = flag[s[i]] + 1;
}
flag[s[i]] = i;
}
maxlen = maxlen > s.size() - start ? maxlen : s.size()-start;
return maxlen;
}
};
int flag[256];
memset(flag,-1,sizeof(int)*256);
不能改为
int flag[256] = {-1};//只有第一个元素被赋值为-1,其余为0