Compare Strings by Frequency of the Smallest Character LeetCode solution in Java

1
class Solution {
2
public int[] numSmallerByFrequency(String[] queries, String[] words) {
3
int[] ans = new int[queries.length];
4
int[] freq = new int[words.length];
5
for (int i = 0; i < words.length; i++) {
6
freq[i] = freqOfSmallest(words[i]);
7
}
8
Arrays.sort(freq);
9
int k = 0;
10
for (String query : queries) {
11
int target = freqOfSmallest(query);
12
ans[k++] = binarySearch(freq, target);
13
}
14
return ans;
15
}
16

17
public int freqOfSmallest(String s) {
18
int[] freq = new int[26];
19
char min = 'z';
20
for (int i = 0; i < s.length(); i++) {
21
char c = s.charAt(i);
22
freq[c - 'a'] += 1;
23
if (c < min) {
24
min = c;
25
}
26
}
27
return freq[min - 'a'];
28
}
29

30
public int binarySearch(int[] arr, int target) {
31
int idx = arr.length;
32
int lo = 0;
33
int hi = idx - 1;
34
int mid;
35
while (lo <= hi) {
36
mid = (lo + hi) / 2;
37
if (arr[mid] <= target) {
38
lo = mid + 1;
39
} else {
40
idx = mid;
41
hi = mid - 1;
42
}
43
}
44
return arr.length - idx;
45
}
46
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0