1824 · 最频繁出现的子串 public int getMaxOccurrences(String s, int minLength, int maxLength, int maxUnique) { int[] arr = new int[26]; int j = 0; int unique_char = 0; Map<String, Integer> map = new HashMap<>(); for (int i = 0; i < s.length(); i++) { while (j < s.length() && j - i + 1 <= minLength && unique_char <= maxUnique) { arr[s.charAt(j) - 'a']++; if (arr[s.charAt(j) - 'a'] == 1) unique_char++; j++; } if (j < s.length() && minLength == j - i && unique_char <= maxUnique) { String k = s.substring(i, j); map.put(k, map.getOrDefault(k, 0) + 1); } arr[s.charAt(i) - 'a']--; if (arr[s.charAt(i) - 'a'] == 0) unique_char--; } int res= 0; for (String k : map.keySet()) { res = Math.max(res,map.get(k)); } return res; }