【剑指Offer-48】最长不含重复字符的子字符串
问题
请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。
示例
输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
解答
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int left = 0, right = 0, res = 0;
int memo[128]{}; // 常用ascii码有128个
while (right < s.size()) {
memo[s[right]]++;
while (memo[s[right]] > 1) {
memo[s[left]]--;
left++;
}
right++;
res = max(res, right - left);
}
return res;
}
};
重点思路
滑动窗口法基础题目,窗口每次循环必右移,找准窗口左移的条件即可。