力扣第3题-- 无重复字符的最长字串_JAVA
对于这题我的解法:最长长度不会超过出现不重复的字符数n,因此以这个数为开始,找子串长度为n。如果n没有找到,则n-=1,重新找。
需要判断子串是不重复的字符。

class Solution {
    public int lengthOfLongestSubstring(String s) {
        int size = getSize(s);
        System.out.println();

        for (int i = 0; i < size; i++) {
            int maxLength = size - i;//最大长度
            for (int j = 0; j < s.length(); j++) {
                String substring=null;
                if (j + maxLength - 1 < s.length()) {
                    substring = s.substring(j, j+maxLength);
                }
                if (getSize(substring) == maxLength) {
                    return maxLength;
                }
            }
        }
        return 0;
    }
     

    private int getSize(String s) {
        if (s==null){
            return 0;
        }
        char[] chars = s.toCharArray();
        // 得到无重复字符数
        HashSet<Character> hashSet = new HashSet<>();
        for (int i = 0; i < chars.length; i++) {
            hashSet.add(chars[i]);
        }
        int size = hashSet.size();
        return size;
    }
}

力扣第3题-- 无重复字符的最长字串_子串_02
待后期优化