yxc题解
相似题目:基础班799.最长连续子序列 具体P18(基础班笔记)
class Solution {
public:
int lengthOfLongestSubstring(string s) {
unordered_map<char, int> hash;
int res = 0; //用来记录最大值
for (int i = 0, j = 0; i < s.size(); i ++) {
hash[s[i]] ++; //i指针(后面的指针)扫描到哪个字符(字符串中的新字符),新字符加到hash表中(就是将该新字符对应的个数+1)
while (hash[s[i]] > 1) hash[s[j ++]] --; /*当新加入的字符不是新字符了(在之前出现过),重复的字符只会是最新加进去*/
res = max(res, i - j + 1); //刚加进去的字符个数是2了,将j指针所对应的字符数-1.并往后移动j,知道移到i的位置,将重复字符数-1,跳出while,
//这里的max(),是在没有重复字符时不断进行计算的,所以最终计算的就是不重复子串个数
}
return res;
}
};