题目描述
解体思路
用双指针算法维护一个哈希表,记录不同字母出现的次数,一个指针往前移动知道有字母的出现次数大于1则停下另一个指针开始移动知道字母的次数为1的时候第一个指针继续移动指针移动过程中记录 i - j + 1的最大长度。
class Solution {
public:
int lengthOfLongestSubstring(string s) {
unordered_map<char, int> data;
int res = 0;
for(int i = 0, j = 0; i < s.size() ; i ++)
{
data[s[i]] ++;
while(data[s[i]] > 1)
{
data[s[j]] --;
j ++;
}
res = max(res, i - j + 1);
}
return res;
}
};