無重複字元的最長子串----java
阿新 • • 發佈:2021-11-04
給定一個字串 s ,請你找出其中不含有重複字元的最長子串的長度。
示例1:
輸入: s = "abcabcbb"
輸出: 3
解釋: 因為無重複字元的最長子串是 "abc",所以其長度為 3。
示例 2:
輸入: s = "bbbbb"
輸出: 1
解釋: 因為無重複字元的最長子串是 "b",所以其長度為 1。
示例 3:
輸入: s = "pwwkew"
輸出: 3
解釋: 因為無重複字元的最長子串是"wke",所以其長度為 3。
請注意,你的答案必須是 子串 的長度,"pwke"是一個子序列,不是子串。
示例 4:
輸入: s = ""
輸出: 0
來源:力扣(LeetCode)
連結: https://leetcode-cn.com/problems/longest-substring-without-repeating-characters
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
class Solution { public int lengthOfLongestSubstring(String s) { int left = 0,right = 0,len = s.length(),max = 0; Set<Character> window = new HashSet<>(); //新建雜湊表 while(right < len){ char xinchar = s.charAt(right); while(window.contains(xinchar)){ //判斷right指向的元素是否再window滑動視窗中 window.remove(s.charAt(left)); //移除left元素 left++; } max = Math.max(max,right - left + 1); //更新長度 window.add(xinchar); //新增不再滑動視窗中的元素 right++; } return max; } }