题目来源
给一个字符串,判断里面的最长没有重复字符的子串。我是用哈希表来记录每个字符的最后出现的位置,以及记录一下当前字符串的开始位置,代码如下:
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int n = s.size();
unordered_map<char, int> map;
int start = 0, res = 0;
for (int i=0; i<n; i++) {
if (map.count(s[i]) != 0 && map[s[i]] >= start)
start = map[s[i]] + 1;
map[s[i]] = i;
res = max(res, i - start + 1);
}
return res;
}
};
代码挺简洁的,不过不够快。不过也还行吧,至少不是数量级的差别。所以就这样吧。