能最快想出来的解法,性能肯定不是太好
class Solution {
public:
int lengthOfLongestSubstring(string s) {
string s1;
int result = 0;
int max = 0;
int len = s.length();
for(int i =0 ;i<len;++i)
{
result = s1.find(s[i]);
if(result<0)
s1+=s[i];
else
{
max = s1.length()>max? s1.length():max;
s1 = s1.substr(result+1);
s1+=s[i];
}
}
max = s1.length()>max? s1.length():max;
return max;
}
};
这个解法会比较好
int lengthOfLongestSubstring(string s) {
if(s.length()<2)
return s.length();
vector<int> charSet(256,-1); //256,all ASCII chars to int
int max_len=0,j=0;
for(int i=0;i<s.length();++i){
j=max(charSet[s[i]]+1,j);
charSet[s[i]]=i;
max_len=max(max_len,i-j+1);
}
return max_len; <pre name="code" class="cpp"> }