Tìm ký tự max frequency: Dictionary đếm + MaxBy (LINQ) hoặc Aggregate.
Ví dụ minh họa
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
string s = "livelife!";
Console.WriteLine($"Chuỗi: \"{s}\"");
// Cách 1: LINQ GroupBy + MaxBy (.NET 6+)
var maxChar = s.GroupBy(c => c)
.MaxBy(g => g.Count());
Console.WriteLine($"\nMaxBy (NET6+): '{maxChar.Key}' - {maxChar.Count()} lần");
// Cách 2: Dictionary + Aggregate (tương thích cũ)
var counts = new Dictionary();
foreach (char c in s)
counts[c] = counts.GetValueOrDefault(c) + 1;
var max = counts.Aggregate((x, y) => x.Value > y.Value ? x : y);
Console.WriteLine($"Aggregate: '{max.Key}' - {max.Value} lần");
// Cách 3: Tất cả tần suất
Console.WriteLine("\nTất cả tần suất:");
foreach (var kvp in counts.OrderByDescending(x => x.Value).ThenBy(x => x.Key))
Console.WriteLine($"'{kvp.Key}': {kvp.Value} {(kvp.Value == 1 ? "lần" : "lần")}");
}
}
Kết quả đầu ra
Chuỗi: "livelife!" MaxBy (NET6+): 'i' - 3 lần Aggregate: 'i' - 3 lần Tất cả tần suất: 'i': 3 lần 'l': 2 lần 'e': 2 lần 'v': 1 lần 'f': 1 lần '!': 1 lần
Lưu ý: Code gốc in ra 'e', 'i', 'l' đều 2 lần - sai vì chuỗi "livelife!" có 'i' xuất hiện 3 lần (lvelife!). Code sửa đã cho kết quả đúng.