侧边栏壁纸
  • 累计撰写 12 篇文章
  • 累计创建 11 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

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

bingo
2021-11-09 / 0 评论 / 0 点赞 / 630 阅读 / 217 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2023-12-29,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

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

题目来源:无重复字符的最长子串 - 力扣

思路:
滑动窗口:定义窗口左边界,右边界,哈希表存放字符及其位置,右边界每滑动一次往哈希表加入字符,出现重复则移动左边界到不重复位置,最后记录最大长度。

public class Solution {
    public int lengthOfLongestSubstring(String s) {
        // 记录不包含重复字符子串的左边最大位置
        int left = 0;
        int length = 1;
        // 记录字符在字符串中的位置
        HashMap<Character, Integer> map = new HashMap<>();
        for (int i = 0; i < s.length(); i++) {
            if (map.containsKey(s.charAt(i))) {
                left = Math.max(left, map.get(s.charAt(i)) + 1);
            }
            map.put(s.charAt(i), i);
            length = Math.max(length, i - left + 1);
        }
        return length;
    }
}
0

评论区