给定一个字符串 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;
原文地址:https://www.cnblogs.com/cxyxiaobao/p/15540606.html