无重复字符的最长子串

更好的阅读体验 YinKai 's Blog

题目:无重复字符的最长子串

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

示例 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 由英文字母、数字、符号和空格组成

来源:力扣(LeetCode)

解题思路:

​ 用哈希表map<char, int>将每一个字符与其出现次数作为键值对存起来,然后利用双指针从前往后扫描即可:

  1. 如果当前字符只出现了一次,则更新最长串的长度,并继续向后扫描
  2. 如果当前字符出现了不止一次,则将尾指针向前挪,挪至当前字符只出现一次为止,然后更新最长串的长度,并继续向后扫描。
AC代码
class Solution {
   
public:
    int lengthOfLongestSubstring(string s) {
   
        unordered_map<char, int> hash;
        int res = 0;
        for (int i = 0, j = 0; i < s.size(); i ++)
        {
   
            hash[s[i]] ++;
            while (hash[s[i]] > 1) {
   
                hash[s[j]] --;
                j ++;
            }
            res = max(res, i - j + 1);
        }

        return res;
    }
};

相关推荐

  1. 重复字符长子

    2023-12-09 16:40:08       43 阅读
  2. 重复字符长子

    2023-12-09 16:40:08       12 阅读
  3. 重复字符长子(LeetCode 3)

    2023-12-09 16:40:08       48 阅读
  4. leetcode-3.重复字符长子

    2023-12-09 16:40:08       41 阅读
  5. 重复字符长子(刷题日常)

    2023-12-09 16:40:08       41 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-09 16:40:08       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-09 16:40:08       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-09 16:40:08       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-09 16:40:08       18 阅读

热门阅读

  1. LintCode 1287 · Increasing Triplet Subsequence (贪心算法)

    2023-12-09 16:40:08       38 阅读
  2. codeforces每日两道思维题(第 四 天)

    2023-12-09 16:40:08       43 阅读
  3. Matlab 镜像变换(2D)

    2023-12-09 16:40:08       36 阅读
  4. 源码安装git

    2023-12-09 16:40:08       37 阅读
  5. 查看域名A记录

    2023-12-09 16:40:08       27 阅读
  6. ogre3d 资料

    2023-12-09 16:40:08       38 阅读
  7. Flink 读写 HBase 总结

    2023-12-09 16:40:08       39 阅读
  8. Docker 常用命令

    2023-12-09 16:40:08       46 阅读