01 题目描述
给定一个字符串 s
,请你找出其中不含有重复字符的 最长子串 的长度。
02 示例
示例 1:
输入: s = "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例 2:
输入: s = "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
示例 3:
输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
提示:
0 <= s.length <= 5 * 104
s
由英文字母、数字、符号和空格组成
03 C++代码
class Solution {
public:
int lengthOfLongestSubstring(string s) {
if(s.size() == 0) return 0;
unordered_set<char> substring;
int max_len = 0; // 动态维护最长子串的长度
int left = 0; // 左指针
for (int i = 0; i < s.size(); i++){
while(substring.find(s[i]) != substring.end()){
substring.erase(s[left]);
left ++;
}
max_len = max(max_len, i - left + 1);
substring.insert(s[i]);
}
return max_len;
}
};
04 一点感想
字符串系列
05 刷题进度
学习目标:坚持刷题 坚持刷题 坚持刷题!!!
那写看似毫无波澜的日复一日,会在某一天 让你突然发现努力的意义。
无悔昨天 & 感谢今天 & 喜欢明天~
一以贯之的努力,不得懈怠的人生。每天的微小积累,会决定最终的结果,这 就是答案!