Ký tự xuất hiện nhiều nhất trong chuỗi là ký tự có số lần xuất hiện lớn nhất. Ví dụ: chuỗi "apples are red" - ký tự 'e' xuất hiện 3 lần, nhiều hơn bất kỳ ký tự nào khác.
Ví dụ
using System;
namespace CharCountDemo
{
public class Example
{
public static void Main()
{
String str = "abracadabra";
int[] charCount = new int[256]; // Bảng ASCII
int length = str.Length;
// Đếm tần suất
for (int i = 0; i < length; i++)
charCount[str[i]]++;
// Tìm max
int maxCount = -1;
char character = ' ';
for (int i = 0; i < length; i++)
{
if (maxCount < charCount[str[i]])
{
maxCount = charCount[str[i]];
character = str[i];
}
}
Console.WriteLine("Chuỗi: " + str);
Console.WriteLine("Ký tự xuất hiện nhiều nhất: " + character);
Console.WriteLine("Số lần xuất hiện: " + maxCount);
}
}
}
Kết quả
Chuỗi: abracadabra Ký tự xuất hiện nhiều nhất: a Số lần xuất hiện: 5
Giải thích
- Mảng
charCount[256]lưu tần suất cho mỗi mã ASCII - Duyệt chuỗi, tăng đếm tại index = mã ký tự
- Duyệt lại để tìm giá trị max và ký tự tương ứng
Cải tiến cho Unicode: Dùng Dictionary<char, int> thay vì mảng cố định:
var counts = new Dictionary(); foreach (char c in str) counts[c] = counts.GetValueOrDefault(c, 0) + 1; var max = counts.Max(kvp => kvp.Value); var mostFrequent = counts.First(kvp => kvp.Value == max).Key;
Lưu ý: Nếu có nhiều ký tự cùng tần suất max, thuật toán trên trả về ký tự xuất hiện trước trong chuỗi.