博客
关于我
LeetCode 无重复字符的最长子串 获取字符串中不重复的子串最大长度
阅读量:792 次
发布时间:2023-01-31

本文共 1011 字,大约阅读时间需要 3 分钟。

为了解决这个问题,我们需要找出给定字符串中不含重复字符的最长子串的长度。这个问题可以通过滑动窗口技术结合哈希表来高效地解决。

方法思路

这个问题可以通过滑动窗口法来解决。滑动窗口技术用于维护一个窗口,该窗口内的字符不重复。我们使用哈希表记录字符的最新位置,当遇到重复字符时,调整窗口起点,确保窗口内没有重复字符。一旦遇到重复字符,移除已经用过的字符,更新窗口起点。

具体步骤如下:

  • 初始化一个哈希表来记录字符的最新出现位置。
  • 遍历字符串的每个字符,从左到右扩展窗口。
  • 对于每个字符,检查它是否已经在当前窗口内出现:
    • 如果存在,调整窗口起点,确保窗口内没有重复字符。
    • 更新字符的最新出现位置。
  • 记录当前窗口的长度,并更新最大长度。
  • 解决代码

    public int lengthOfLongestSubstring(String s) {    Map
    charMap = new HashMap<>(); int maxLength = 0; int start = 0; for (int end = 0; end < s.length(); end++) { char c = s.charAt(end); if (charMap.containsKey(c)) { start = Math.max(start, charMap.get(c) + 1); } charMap.put(c, end); int currentWindowLength = end - start + 1; if (currentWindowLength > maxLength) { maxLength = currentWindowLength; } } return maxLength;}

    代码解释

    • 哈希表:用于记录每个字符最后出现的索引,确保我们可以快速查找到重复字符的位置。
    • 窗口起点:通过滑动窗口技术动态调整,确保窗口内没有重复字符。
    • 窗口长度计算:每次调整窗口起点后,计算当前窗口的长度,更新最长长度。

    这个方法的时间复杂度为 O(n),其中 n 是字符串的长度,适用于处理大规模数据。通过动态调整窗口起点,确保了算法的高效性。

    转载地址:http://clgyk.baihongyu.com/

    你可能感兴趣的文章
    Kubernetes学习总结(13)—— Kubernetes 各个组件的概念
    查看>>
    Kubernetes学习总结(14)—— Kubernetes 实用命令总结
    查看>>
    Kubernetes学习总结(15)—— Kubernetes 实战之部署 Mysql 集群
    查看>>
    Kubernetes学习总结(16)—— Kubernetes 实战之部署 Redis 集群
    查看>>
    Kubernetes学习总结(17)—— Kubernetes 快速入门需要掌握的知识点总结
    查看>>
    Kubernetes学习总结(18)—— Kubernetes 容器网络
    查看>>
    Kubernetes学习总结(1)——Kubernetes入门简介
    查看>>
    Kubernetes学习总结(2)——Kubernetes设计架构
    查看>>
    Kubernetes学习总结(3)——一年时间打造全球最大规模之一的Kubernetes集群,蚂蚁金服怎么做到的?
    查看>>
    Kubernetes学习总结(4)——Kubernetes v1.20 重磅发布 | 新版本核心主题 & 主要变化解读
    查看>>
    Kubernetes学习总结(5)——Kubernetes 常见面试题汇总
    查看>>
    Kubernetes学习总结(6)——Kubernetes 7周年:它为什么如此受欢迎?
    查看>>
    Kubernetes学习总结(7)——学习 Kubernetes 的 Pod
    查看>>
    Kubernetes学习总结(8)—— Kubernetes Pod 资源管理 和 Pod 服务质量
    查看>>
    Kubernetes学习总结(9)—— 基础架构的未来是 K8s,那么 K8s 的未来在何方?
    查看>>
    kubernetes实战(十三):k8s使用helm持久化部署harbor集成openLDAP登录
    查看>>
    Kubernetes实战(一)-Kubernetes集群搭建
    查看>>
    Kubernetes实战(七)-优先级调度(Pod Priority Preemption)
    查看>>
    Kubernetes实战(三十一)-Calico网络部署(推荐)
    查看>>
    Kubernetes实战(三十三)-外部Etcd集群部署与调优(更安全的数据存储策略)
    查看>>