## 1647. Minimum Deletions to Make Character Frequencies Unique

A string `s` is called good if there are no two different characters in `s` that have the same frequency.

Given a string `s`, return the minimum number of characters you need to delete to make `s` good.

The frequency of a character in a string is the number of times it appears in the string. For example, in the string `"aab"`, the frequency of `'a'` is `2`, while the frequency of `'b'` is `1`.

Example 1:

```Input: s = "aab"
Output: 0
Explanation: `s` is already good.
```

Example 2:

```Input: s = "aaabbbcc"
Output: 2
Explanation: You can delete two 'b's resulting in the good string "aaabcc".
Another way it to delete one 'b' and one 'c' resulting in the good string "aaabbc".```

Example 3:

```Input: s = "ceabaacb"
Output: 2
Explanation: You can delete both 'c's resulting in the good string "eabaab".
Note that we only care about characters that are still in the string at the end (i.e. frequency of 0 is ignored).
```

Constraints:

• `1 <= s.length <= 105`
• `s` contains only lowercase English letters.

## Rust Solution

``````struct Solution;

impl Solution {
fn min_deletions(s: String) -> i32 {
let mut count = vec![0; 26];
for b in s.bytes() {
count[(b - b'a') as usize] += 1;
}
let mut res = 0;
for i in 0..26 {
'outer: while count[i] != 0 {
for j in 0..26 {
if j != i && count[i] == count[j] {
count[i] -= 1;
res += 1;
continue 'outer;
}
}
break;
}
}
res
}
}

#[test]
fn test() {
let s = "aab".to_string();
let res = 0;
assert_eq!(Solution::min_deletions(s), res);
let s = "aaabbbcc".to_string();
let res = 2;
assert_eq!(Solution::min_deletions(s), res);
let s = "ceabaacb".to_string();
let res = 2;
assert_eq!(Solution::min_deletions(s), res);
}
``````

Having problems with this solution? Click here to submit an issue on github.