找到字符串的最长无重复字符子串

352 阅读1分钟

题目描述

给定一个数组arr,返回arr的最长无的重复子串的长度(无重复指的是所有数字都不相同)。

[2,3,4,5]

4

[2,2,3,4,3]

3

1≤n≤10^5

解法:

  • 1.首先我们先尝试暴力解法 既然提到无重复的,那我们可以借助Set来帮我们去重
import java.util.*;


public class Solution {
    /**
     * 
     * @param arr int整型一维数组 the array
     * @return int整型
     */
    public int maxLength (int[] arr) {
        // write code here
        //最长无重复子串
        //首先暴力解法来一波
        int max = 0;
        for(int i = 0; i < arr.length; i++)
        {
            Set<Integer> set = new HashSet();
            for(int j = i; j < arr.length; j++)
            {
                if(!set.add(arr[j]))
                {
                    max = Math.max(max , set.size());
                    break;
                }
            }
        }
        return max;
    }
}