解题报告 -无重复字符的最长子串
LeetCode 3. 无重复字符的最长子串
@TOC
题目描述
3. 无重复字符的最长子串示例:
输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
提示:
0 <= s.length <= 5 * 104s 由英文字母、数字、符号和空格组成
一、解题关键词
无重复字符的 最长子串 的长度
二、解题报告
1.思路分析
-
肯定需要遍历全部数据
-
left right 两个坐标记录移动
-
maxLen 记录最大长度
2.时间复杂度
3.代码示例
class Solution { public int lengthOfLongestSubstring(String s) { if(s == null || s.length() == 0)return 0; Map<Character,Integer> map = new HashMap<>(); int maxLen = 0; int left = 0; 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); maxLen = Math.max(maxLen,i - left + 1); } return maxLen; }}
4.知识点
1、滑动窗口,固定控制窗口大小2、使用双指针,有序集合