題目來源
給一個(gè)字符串浊猾,判斷里面的最長沒有重復(fù)字符的子串。我是用哈希表來記錄每個(gè)字符的最后出現(xiàn)的位置曙蒸,以及記錄一下當(dāng)前字符串的開始位置,代碼如下:
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;
}
};
代碼挺簡潔的岗钩,不過不夠快纽窟。不過也還行吧,至少不是數(shù)量級(jí)的差別兼吓。所以就這樣吧臂港。