最长不含重复字符的子字符串
题目
请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。
假设字符串中只包含从’a’到’z’的字符。
样例
输入:“abcabc”
输出:3
题解
- 双指针算法
- i、j 维护相关不重复的子串
class Solution {
public:
int longestSubstringWithoutDuplication(string s) {
unordered_map<char, int> u;
int n = s.size(), res = 0;
for (int i = 0, j = 0; i < n; i ++) {
u[s[i]] ++;
while (j <= i && u[s[i]] > 1) u[s[j ++]] --;
res = max(res, i - j + 1);
}
return res;
}
};