caiouechi / Studies

5 stars 1 forks source link

Coding challenges #174

Open caiouechi opened 3 years ago

caiouechi commented 3 years ago

https://leetcode.com/problems/minimum-deletions-to-make-character-frequencies-unique/

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;

            }