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.
基本解法,使用hash,从头开始遍历每个字串,如果其中一个字串到字符串结束都没有重复字符,那么这个字串就是最长不重复字串,下面的代码里可以直接return,不用再走后面的for循环了。
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int nsize = s.size();
int nmax = 0;
int j=0;
if(nsize < 2){return nsize;}
char hash[256];
for(int i=0;i<nsize;i++)
{
memset(hash,0,sizeof(hash));
for(j=i;j<nsize;j++)
{
if(hash[s.at(j)] == 0)
{
hash[s.at(j)]=1;
}
else
{
if(j-i>nmax){nmax =j-i;}
break;
}
}
if(j==nsize&&j-i>nmax){nmax = j-i; return nmax;}
}
return nmax;
}
};