Min Deletions to Make Frequency of Each Letter Unique
public int MinDeletions(string s)
{
var arrayList = s.ToArray();
var arrayGrouped = (from p in arrayList
group p by p into g
select g.Count()
).OrderBy(p => p).ToList();
var commonValues = new List<int>();
var numbersToDelete = 0;
for (int i = 0; i < arrayGrouped.Count(); i++)
{
if (!commonValues.Contains(arrayGrouped[i]))
{
commonValues.Add(arrayGrouped[i]);
}
else
{
var varaibleX = true;
var takeLastValue = (arrayGrouped[i] - 1);
while (varaibleX)
{
if(takeLastValue > 0)
{
if (!commonValues.Contains(takeLastValue)){
commonValues.Add(takeLastValue);
numbersToDelete = numbersToDelete + (arrayGrouped[i] - takeLastValue);
varaibleX = false;
}
}
else
{
varaibleX = false;
numbersToDelete = numbersToDelete + arrayGrouped[i];
}
takeLastValue--;
}
}
}
//no two different characters
return numbersToDelete;
}
https://leetcode.com/problems/minimum-deletions-to-make-character-frequencies-unique/
Min Deletions to Make Frequency of Each Letter Unique