📅  最后修改于: 2022-03-11 14:49:04.161000             🧑  作者: Mango
//return the character that appears the maximum number of times in the string
//contain only ASCII characters, from the ranges ('a'-'z','A'-'Z','0'-'9'), and case sensitive
//If there is a tie in the maximum number of times a character appears in the string, return the character that appears first in the string
public static void Main(string[] args)
{
CharCounter("This is a neat day for Things about Coding9999");
}
public static void CharCounter(string str)
{
string strValidated = "";
str = str.Replace(" ", ""); //Remove all spaces
//Validate alpha-numberic only
if (Regex.IsMatch(str, @"^[A-Za-z0-9]+$")) strValidated = str;
else throw new FormatException("--------> Only Apha Numeric values allowed");
Dictionary dict = new Dictionary();
foreach (char c in strValidated) //Create Dictionary
{
if (dict.ContainsKey(c)) dict[c] = dict[c] + 1;
else dict.Add(c, 1);
}
//Sort(K,V) by Highest Values
var ordered = dict.OrderByDescending(x => x.Value)
.ToDictionary(d => d.Key, d => d.Value);
//var singleEntryDict = ordered.First();
var result = ordered.Take(1)
.ToDictionary(d => d.Key, d => d.Value);
foreach (var item in result.Keys)
{
Console.WriteLine($"Key= {item} : Value= {result[item]}");
}
}