其他分享
首页 > 其他分享> > 无重复字符的最长子串代码实现

无重复字符的最长子串代码实现

作者:互联网

上代码:
    public static int get(String s) {
//      判断字符串是否为空
        if(s.length() == 0){
            return 0;
        }
//      定义left指针
        int left= 0;
//      定义最大容量
        int max = 0;
//      定义一个map,作为一个滑动窗口
        HashMap<Character, Integer> map = new HashMap<>();
//      遍历字符串
        for (int i = 0; i < s.length(); i++) {
//          是否有重复的元素,如果有重复元素,变化left指针,没有继续执行
//          1.只要重复则必须要更新left指针
//          2.map.get(s.charAt(i)) 获得的是重复元素在map中left的指针 +1是因为i是从0开始的
//          3.left的更新与个数有关系
            if(map.containsKey(s.charAt(i))){
                left = Math.max(left,map.get(s.charAt(i))+1);
            }
//          重复的字符key,直接会将其覆盖,但下标(Integer)会进行更新
            map.put(s.charAt(i),i);
//          更新max的最大值
            max = Math.max(max,i - left + 1);
        }
//      返回个数
        return max;
    }

 

标签:子串,字符,charAt,map,int,max,重复,最长,left
来源: https://www.cnblogs.com/lhr123/p/16468549.html