1 题目要求:
Given a string, find the length of the longest substring without repeating characters.
Example 1:
Input: "abcabcbb"
Output: 3
Explanation: The answer is "abc", with the length of 3.
Example 2:
Input: "bbbbb"
Output: 1
Explanation: The answer is "b", with the length of 1.
2 解决方法:
碰到重复从重复下一个开始算
class Solution {
public:
int lengthOfLongestSubstring(string s) {
vector<int> lut(256,-1);
int start=-1,result=0;
for(int i=0;i!=s.length();i++){
if (lut[s[i]]>start)
start=lut[s[i]];
lut[s[i]]=i;
result = max(result,i-start);
}
return result;
}
};
时间复杂度O(n)
空间复杂度O(256)
另外还可以用HashMap实现,空间复杂度为O(min(m,n)) m为是lut的大小 n是string的大小 用HashMap更节省资源。