无重复字符的最长子串(给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。)

发布时间 2023-10-29 11:06:18作者: 樱圃
import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param arr int整型一维数组 the array
     * @return int整型
     */
    public int maxLength (int[] arr) {
        // write code here
        HashMap<Integer, Integer> hashMap = new HashMap<>();
        int left = 0;
        int max = 1;
        hashMap.put(arr[0],0);
        for(int i=1;i<arr.length;i++){
            if(!hashMap.containsKey(arr[i])){
                hashMap.put(arr[i], i);
                max = Math.max(max, i-left+1);
            }else {
                int temp = hashMap.get(arr[i]);
                while(left <= temp){
                    hashMap.remove(arr[left]);
                    left++;
                }
                hashMap.put(arr[i], i);
                left = temp + 1;
            }
        }
        return max;
    }
}