3_无重复字符的最长字串
难度:中等
题目
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
示例
示例一:
输入: s = “abcabcbb”
输出: 3
解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。
示例二:
输入: s = “bbbbb”
输出: 1
解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。
示例三:
输入: s = “pwwkew”
输出: 3
解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。
请注意,你的答案必须是 子串 的长度,”pwke” 是一个子序列,不是子串。
提示
0 <= s.length <= 5 * 10^4s由英文字母、数字、符号和空格组成
解题
滑动窗口解法
用一个 HashMap 存储字符和出现的位置,然后遍历字符串。
遇到一个字符们首先判断是否存在于 map 中,如果不存在,将字符添加到 map 中,然后记录最大长度,最大长度就是当前位置下标 - 起点位置下标 + 1;如果存在,就更新起点位置下标。
1 | |