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