Java教程

力扣3. 无重复字符的最长子串 Java 滑动窗口

本文主要是介绍力扣3. 无重复字符的最长子串 Java 滑动窗口,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
  1. 无重复字符的最长子串

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

示例 1:
输入: s = “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。

示例 2:
输入: s = “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。

示例 3:
输入: s = “pwwkew” 输出: 3 解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。
请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。

示例 4:
输入: s = “” 输出: 0

解题思路

滑动窗口

代码

class Solution {
    public int lengthOfLongestSubstring(String s) {
        Map<Character,Integer> window=new HashMap<Character,Integer>();
        int templength=0;
        int left=0,right=0;
        //char[] array=s.toCharArray();
        while(right < s.length()){
            //c是将移入窗口的数字
            char c=s.charAt(right);
            right++;
            // 如果满足条件就将 c移入窗口中,并进行窗口内数据的一系列更新
            window.put(c, window.getOrDefault(c, 0)+1);
            while(window.get(c)>1){ 
                char d=s.charAt(left);
                left++;
                window.put(d,window.get(d)-1);
            }
            templength=Math.max(templength,right-left);
        }
        return templength;
    }
}
这篇关于力扣3. 无重复字符的最长子串 Java 滑动窗口的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!