給定一個字符串 s ,請你找出其中不含有重復字符的 最長子串 的長度


給定一個字符串 s ,請你找出其中不含有重復字符的 最長子串 的長度 

題解: 就是在一個字符串中,子串中沒有重復的字符

例如:abda,那么最長是abd,bda都可以

解題圖解:

 

 采用雙指針進行操作

代碼

        int length = s.length();
        List<Character> list = new ArrayList<>();
        int left =0;
        int slength =0;
        int keylength =0;
        HashMap<Character, Integer> map = new HashMap<>();
        for (int i =0 ;i<length -1;i++){
            list.add(s.charAt(i));
            Integer integer = map.get(s.charAt(i));
            if (integer == null){
                slength =slength+1;
                map.put(s.charAt(i),i);
            }else{
                keylength =i-left;
                slength =slength-keylength>0?slength:keylength;
                left++;
            }

        }
        return slength;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM