From c47d2185b50cbde34bfa8428be14ba84b9348ec8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D1=8B=D1=82=D0=BA=D0=BE=D0=B2=20=D0=A0=D0=BE=D0=BC?= =?UTF-8?q?=D0=B0=D0=BD?= Date: Wed, 7 Feb 2024 22:08:26 +0300 Subject: [PATCH] fast solution 451 --- .idea/.idea.Leetcode/.idea/workspace.xml | 57 +++++++++---------- .../Fast/FastSolution.cs | 26 +++++++++ 451. Sort Characters By Frequency/Program.cs | 2 +- 3 files changed, 55 insertions(+), 30 deletions(-) create mode 100644 451. Sort Characters By Frequency/Fast/FastSolution.cs diff --git a/.idea/.idea.Leetcode/.idea/workspace.xml b/.idea/.idea.Leetcode/.idea/workspace.xml index 1c355c4..6fcef90 100644 --- a/.idea/.idea.Leetcode/.idea/workspace.xml +++ b/.idea/.idea.Leetcode/.idea/workspace.xml @@ -89,11 +89,9 @@ - - - + - + - { - "keyToString": { - ".NET Project.14. Longest Common Prefix.executor": "Run", - ".NET Project.150. Evaluate Reverse Polish Notation.executor": "Run", - ".NET Project.9. Palindrome Number.executor": "Run", - "ASKED_ADD_EXTERNAL_FILES": "true", - "RunOnceActivity.OpenProjectViewOnStart": "true", - "RunOnceActivity.ShowReadmeOnStart": "true", - "WebServerToolWindowFactoryState": "false", - "git-widget-placeholder": "main", - "last_opened_file_path": "/home/nullptr/Projects/dotnet/Leetcode/15. 3Sum/15. 3Sum.csproj", - "node.js.detected.package.eslint": "true", - "node.js.detected.package.tslint": "true", - "node.js.selected.package.eslint": "(autodetect)", - "node.js.selected.package.tslint": "(autodetect)", - "nodejs_package_manager_path": "npm", - "settings.editor.selected.configurable": "SolutionBuilderGeneralOptionsPage", - "vue.rearranger.settings.migration": "true" + +}]]> diff --git a/451. Sort Characters By Frequency/Fast/FastSolution.cs b/451. Sort Characters By Frequency/Fast/FastSolution.cs new file mode 100644 index 0000000..b024f3b --- /dev/null +++ b/451. Sort Characters By Frequency/Fast/FastSolution.cs @@ -0,0 +1,26 @@ +using System.Text; + +namespace _451._Sort_Characters_By_Frequency.Fast; + +public class Solution +{ + private static int Comparer((char, int) el1, (char, int) el2) + { + return el2.Item2.CompareTo(el1.Item2); + } + + public string FrequencySort(string s) + { + var count = new (char, int)[128]; + for (var ch = (char)0; ch < count.Length; ch++) + count[ch].Item1 = ch; + foreach (var c in s) + count[c].Item2++; + var sb = new StringBuilder(); + Array.Sort(count, Comparer); + for (var ch = (char)0; ch < count.Length; ch++) + while (count[ch].Item2-- > 0) + sb.Append(count[ch].Item1); + return sb.ToString(); + } +} \ No newline at end of file diff --git a/451. Sort Characters By Frequency/Program.cs b/451. Sort Characters By Frequency/Program.cs index 9967c7b..04fb8eb 100644 --- a/451. Sort Characters By Frequency/Program.cs +++ b/451. Sort Characters By Frequency/Program.cs @@ -1,4 +1,4 @@ using _451._Sort_Characters_By_Frequency; -var sol = new Solution(); +var sol = new _451._Sort_Characters_By_Frequency.Fast.Solution(); Console.WriteLine(sol.FrequencySort("gbngjaaaaaaaafsdgnjk;fdsnjkg;fds")); \ No newline at end of file