Given a string, find the length of the longest substring without repeating characters.
Examples:
Given "abcabcbb"
, the answer is "abc"
, which the length is 3.
Given "bbbbb"
, the answer is "b"
, with the length of 1.
Given "pwwkew"
, the answer is "wke"
, with the length of 3. Note that the answer must be a substring, "pwke"
is a subsequence and not a substring.
题目意思是找到其中的字符都不相同最大子字符串
思路:
设置左右临界点,找到他的每个字符不同的子区间,取最大的那个
代码:
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int res=1;
if(!s.size())return 0;
int l=0;
for(int i=1;i<s.size();i++){
for(int j=i-1;j>=0;j--)
if(s[i]==s[j]){
if(res<(i-l))
res=i-l;
if(j>=l)
l=j+1;
break;
}
}
if(s.size()-l>res)
res=s.size()-l;
return res;
}
};
还看到别人用hashmap写,时间复杂度应该是减小了好多,可以减少第二个for,具体请看原题讨论区。