# LeetCode – Strings – Compare Strings by Frequency of the Smallest Character

Let’s define a function `f(s)` over a non-empty string `s`, which calculates the frequency of the smallest character in `s`. For example, if `s = "dcce"` then `f(s) = 2` because the smallest character is `"c"` and its frequency is 2.

Now, given string arrays `queries` and `words`, return an integer array `answer`, where each `answer[i]` is the number of words such that `f(queries[i])` < `f(W)`, where `W` is a word in `words`.

Example 1:

```Input: queries = ["cbd"], words = ["zaaaz"]
Output: 
Explanation: On the first query we have f("cbd") = 1, f("zaaaz") = 3 so f("cbd") < f("zaaaz").
```

Example 2:

```Input: queries = ["bbb","cc"], words = ["a","aa","aaa","aaaa"]
Output: [1,2]
Explanation: On the first query only f("bbb") < f("aaaa"). On the second query both f("aaa") and f("aaaa") are both > f("cc").```
``class Solution {    public int[] numSmallerByFrequency(String[] queries, String[] words) {        int[] q_freq = new int[queries.length];        for(int i=0;i<queries.length;i++){            q_freq[i] = getFrequency(queries[i]);        }                int[] w_freq = new int[words.length];        for(int i=0;i<words.length;i++){            w_freq[i] = getFrequency(words[i]);        }                //System.out.println(Arrays.toString(q_freq));        //System.out.println(Arrays.toString(w_freq));                int[] result_freq = new int[queries.length];        for(int i=0;i<q_freq.length;i++){            int queryfrequency = q_freq[i];            int counter = 0;            for(int j=0;j<w_freq.length;j++){                if(queryfrequency < w_freq[j]){                    counter++;                }                result_freq[i] = counter;            }        }                return result_freq;    }        public int getFrequency(String word){        if(word.length() == 1) return 1;        Map<String,Integer> freqMap = new TreeMap<String,Integer>();        for(int i=0;i<word.length();i++){            if(freqMap.containsKey(word.charAt(i)+"")){                                     freqMap.put(word.charAt(i)+"",freqMap.get(word.charAt(i)+"")+1);            }else{                freqMap.put(word.charAt(i)+"",1);            }        }        if(freqMap.size() == 1) return word.length();        return freqMap.get( (freqMap.keySet().toArray()) );    }}``