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

八 3 无重复字符的最长子串 3. 无重复字符的最长子串https://leetcode.cn/problems/longest-substring-without-repeating-characters/给定一个字符串s请你找出其中不含有重复字符的最长 子串的长度。示例 1:输入:s abcabcbb输出:3解释:因为无重复字符的最长子串是abc所以其长度为 3。注意 bca 和 cab 也是正确答案。示例 2:输入:s bbbbb输出:1解释:因为无重复字符的最长子串是b所以其长度为 1。示例 3:输入:s pwwkew输出:3解释:因为无重复字符的最长子串是wke所以其长度为 3。 请注意你的答案必须是子串的长度pwke是一个子序列不是子串。提示0 s.length 5 * 104s由英文字母、数字、符号和空格组成class Solution { public int lengthOfLongestSubstring(String s) { // 哈希表记录字符最后一次出现的索引 字符最后一次出现的索引 MapCharacter, Integer charIndex new HashMap(); int left 0;// 左边界 int maxLen 0;// 最大长度 for(int right 0; right s.length(); right){ //charAt() 方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1 char c s.charAt(right); // 如果字符已存在且上次出现的位置在当前窗口内 if(charIndex.containsKey(c) charIndex.get(c) left){ //// 左边界跳到重复字符上次出现的下一个位置 left charIndex.get(c) 1; } // 更新该字符的最新位置 charIndex.put(c, right); // 更新最大长度 maxLen Math.max(maxLen, right - left 1); } return maxLen; } }