注意两点:
- 需要多次判重,就考虑使用
unordered_map
(哈希实现),或者map
(红黑树)。 - 如果集合元素固定且数量不多,可直接使用桶方法。
代码如下:
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int maxlen = 0, start = 0;
vector<int> a(128,-1);
for(int i = 0; i < s.size(); i++) {
int x = a[int(s[i])];
if(x >= start) start = x + 1;
a[int(s[i])] = i;
maxlen = maxlen > i - start + 1 ? maxlen : i - start + 1;
}
return maxlen;
}
};