滑动窗口:无重复字符的最长子串
问题
给定一个字符串 s ,请你找出其中不含有重复字符的 最长 的长度。
思路
暴力求解+滑动窗口
代码
class Solution { public int lengthOfLongestSubstring(String s) { if(s.length() == 0){ return 0; } int res = 0; Deque<Character> deque = new LinkedList<>(); Set<Character> set = new HashSet<>(); for(int i = 0; i < s.length();i++){ char c = s.charAt(i); if(!set.contains(c)){ set.add(c); deque.addFirst(c); }else{ while(!deque.isEmpty()){ char t = deque.getLast(); deque.removeLast(); set.remove(t); if(c == t){ break; } } deque.addFirst(c); set.add(c); } int len = deque.size(); res = len > res ? len:res; } return res; } }
浙公网安备 33010602011771号