1
// Solution 1: O(n^2) brute force5
public int longestSubstring(String s, int k) {6
if (s == null || s.isEmpty() || k > s.length()) {10
int[] map = new int[26]; // letter -> freq12
int max = 0; // length of longest substring T so far13
for (int i = 0; i < n; i++) {15
for (int j = i; j < n; j++) {16
map[s.charAt(j) - 'a']++;17
if (isValid(s, i, j, k, map)) {18
max = Math.max(max, j - i + 1);26
// return true if each distinct character in the substring s[left..right] appear >= k times27
private boolean isValid(String s, int left, int right, int k, int[] map) {28
int numLetters = 0; // number of distinct letters29
int numLettersAtLeastK = 0;40
return numLettersAtLeastK == numLetters;