【 LeetCode 热题 HOT 100】3. 无重复字符的最长子串 (C++ 哈希 思维)

简介: 【 LeetCode 热题 HOT 100】3. 无重复字符的最长子串 (C++ 哈希 思维)

题目链接

题意:

给出一个字符串(长度为5e4),求没有重复字符的最长连续串。

思路:

由于长度为5e4,考虑O ( n )的遍历。

用map存储在当前位置之前该字符的最后一次出现的位置是第几个。

las表示如果以当前字符串为结尾,能够保证不重复的位置。

i-las+1就是以当前字符串结尾的答案。

取最大值就好了。

代码:

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        int ans=0,las=0;
        //s=" "+s;
        map<char,int>mp;
        for(int i=0;s[i];i++){
            las=max(las,mp[s[i]]);
            mp[s[i]]=i+1;
            ans=max(ans,i-las+1);
           // cout<<i<<"****"<<las<<"*****"<<ans<<endl;
        }
        return ans;
    }
};
目录
相关文章
|
5月前
|
存储 算法
Leetcode第三题(无重复字符的最长子串)
这篇文章介绍了解决LeetCode第三题“无重复字符的最长子串”的算法,使用滑动窗口技术来找出给定字符串中最长的不含重复字符的子串,并提供了详细的代码实现和解释。
181 0
Leetcode第三题(无重复字符的最长子串)
|
7月前
|
算法
LeetCode第3题无重复字符的最长子串
该文章介绍了 LeetCode 第 3 题无重复字符的最长子串的解法,通过使用 HashSet 记录不重复的子元素,以每个字符开头遍历字符串,遇到重复字符则重新计算,最终找到最长子串,同时提到可以考虑使用 HashMap 降低复杂度。
LeetCode第3题无重复字符的最长子串
|
7月前
|
存储 C++
【C/C++学习笔记】string 类型的输入操作符和 getline 函数分别如何处理空白字符
【C/C++学习笔记】string 类型的输入操作符和 getline 函数分别如何处理空白字符
76 0
|
9月前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-2
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
9月前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-1
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
8月前
|
索引
821.字符的最短距离-力扣(LeetCode)
821.字符的最短距离-力扣(LeetCode)
65 0
|
9月前
|
存储 算法 程序员
力扣经典150题第三十一题:无重复字符的最长子串
力扣经典150题第三十一题:无重复字符的最长子串
51 0
|
9月前
【LeetCode刷题】滑动窗口思想解决问题:长度最小的子数组、无重复字符的最长子串
【LeetCode刷题】滑动窗口思想解决问题:长度最小的子数组、无重复字符的最长子串
|
6月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
7月前
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
165 2