Leetcode 3. 无重复字符的最长子串


给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

3. 无重复字符的最长子串

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

示例 1:

输入: s = "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

示例 2:

输入: s = "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

示例 3:

输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
     请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

示例 4:

输入: s = ""
输出: 0

提示:

  • 0 <= s.length <= 5 * 104

  • s 由英文字母、数字、符号和空格组成

image-20210410095036741

image-20210410095103513image-20210410094844274

image-20210410094942013

image-20210410094951727

class Solution {
public:
    int lengthOfLongestSubstring(string s) 
    {
    	int n=s.size();
    	unordered_set<char> sum;
    	int k=-1;
    	int cnt=0;
    	for(int i=0;i<n;i++)
    	{
    		if(i!=0)
    			sum.erase(s[i-1]);
    		while(k+1  < n && !sum.count(s[k+1]))
    		{
    			sum.insert(s[k+1]);
    			++k;
    		}
    		cnt=max(cnt,k-i+1);
    	}
    	return cnt;
    }
};

文章作者: LHL
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 LHL !
评论
 上一篇
Leetcode 455. 分发饼干 Leetcode 455. 分发饼干
假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。
2021-04-10 LHL
下一篇 
10大排序算法总结 10大排序算法总结
排序算法的分类:1插入:插入,折半插入,希尔2交换:冒泡,快速3选择:简单选择,堆4归并:归并(不只二路归并)5基数:
2021-04-10 LHL
  目录