滑动窗口:无重复字符的最长子串

问题

给定一个字符串 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;
    }
}

 

posted @ 2025-10-25 09:58  我刀呢?  阅读(5)  评论(0)    收藏  举报