Problème
Comptez chaque caractère dans text à l'exception des espaces. Indiquez chaque caractère distinct une seule fois sous la forme « caractère:compte », trié par code de caractère (ainsi les lettres majuscules précèdent les minuscules).
Implémentez character_frequency(text).
Entrée
text : Le texte à analyser (caractères ASCII).
Sortie
Retournez la liste des entrées « caractère:compte ».
Contraintes
0 ≤ longueur ≤ 10 000
Exemples
Entrée :
text = "hello"
Sortie attendue :
expected = ["e:1", "h:1", "l:2", "o:1"]
Entrée :
std::string text = "hello";
Sortie attendue :
std::vector<std::string> expected = {"e:1", "h:1", "l:2", "o:1"};
Entrée :
string text = "hello";
Sortie attendue :
string[] expected = new string[] {"e:1", "h:1", "l:2", "o:1"};
Explication
e:1, h:1, l:2, o:1 triés par caractère : ["e:1", "h:1", "l:2", "o:1"].
Entrée :
text = "a a A"
Sortie attendue :
expected = ["A:1", "a:2"]
Entrée :
std::string text = "a a A";
Sortie attendue :
std::vector<std::string> expected = {"A:1", "a:2"};
Entrée :
string text = "a a A";
Sortie attendue :
string[] expected = new string[] {"A:1", "a:2"};
Explication
Les espaces sont ignorés ; « A » est trié avant « a » : ["A:1", "a:2"].
Comment l'aborder
Essayez d'abord seul, puis ouvrez les indices un par un.
Indice 1
Ignorez les espaces, mais comptez chaque autre caractère ASCII exactement tel qu’il apparaît.
Indice 2
Accumulez les comptes dans une table de fréquences, puis affichez chaque caractère distinct une seule fois.
Indice 3
Triez par code caractère pour que l’ordre des majuscules et minuscules suive naturellement l’ASCII.
Complexité attendue
temps O(n + m log m), espace supplémentaire O(m)
Références
Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.