【算法专题突破】双指针 - 无重复字符的最长子串(10)

简介: 【算法专题突破】双指针 - 无重复字符的最长子串(10)

1. 题目解析

题目链接:3. 无重复字符的最长子串 - 力扣(Leetcode)

这道题目不难理解,就是查找最长的无重复字符的最长子串,

最后返回最长子串的长度即可。

2. 算法原理

第一个想到的当然是暴力解法,我们枚举所有符合0情况的子串即可,

但是肯定还有优化的方法,用暴力大多超时,还没意思,我们来看看该怎么优化:

我们可以使用滑动窗口来优化暴力解法:

首先定义两个指针,让字符进哈希表,如果出现重复字符,就出窗口,知道没有重复字符,

然后我们再继续让字符进哈希表,记录子串的最大长度最后返回即可:

3. 代码编写

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        int len = 0;
        unordered_set<char> win;
        for(int left = 0, right = 0; right < s.size(); right++) {
            while(win.find(s[right]) != win.end()) {
                win.erase(s[left]);
                left++;
            }
            len = max(len, right - left + 1);
            win.insert(s[right]);
        }
        return len;
    }
};

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果感到有所收获的话可以给博主点一个哦。

如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~

相关文章
|
2月前
|
存储 C++
使用字符指针变量和字符数组的比较
使用字符指针变量和字符数组的比较
13 0
|
2月前
|
C语言
C语言----字符数组&&指针
C语言----字符数组&&指针
21 0
|
7天前
|
算法 前端开发 JavaScript
< 每日算法:一文带你认识 “ 双指针算法 ” >
`双指针`并非指的是一种具体的公式或者范式。而是一种运算思路,用于节省逻辑运算时间的`逻辑思路`!双指针算法通常用于`优化时间复杂度`!
< 每日算法:一文带你认识 “ 双指针算法 ” >
|
11天前
|
算法
|
17天前
|
算法
优选算法|【双指针】|202.快乐数
优选算法|【双指针】|202.快乐数
|
17天前
|
算法
优选算法|【双指针】|1089.复写零
优选算法|【双指针】|1089.复写零
|
18天前
|
算法
【优选算法专栏】专题一:双指针--------1.移动0
【优选算法专栏】专题一:双指针--------1.移动0
19 0
|
2月前
|
算法 关系型数据库 MySQL
大厂算法指南:优选算法 ——双指针篇(下)
大厂算法指南:优选算法 ——双指针篇(下)
27 0
|
2月前
|
安全 C语言 C++
字符指针做函数参数
字符指针做函数参数
10 1
|
2月前
|
存储 程序员 C++
使用字符指针变量和字符数组的比较
使用字符指针变量和字符数组的比较
15 1