Problème
Les modèles de langage travaillent sur des tokens, pas sur du texte brut. Un tokeniseur simple met le texte en minuscules et traite chaque suite de lettres a-z et de chiffres 0-9 comme un mot ; tout le reste (espaces, ponctuation, autres caractères) sépare les mots.
Construisez le vocabulaire : les mots distincts triés par fréquence (le plus fréquent en premier), avec les égalités départagées par ordre alphabétique. La position d'un mot dans cette liste est son identifiant de token.
Implémentez build_vocabulary(text).
Entrée
text : Un texte quelconque.
Sortie
Renvoyez le vocabulaire sous forme de liste de mots. Si le texte ne contient aucun mot, renvoyez une liste vide.
Contraintes
0 ≤ longueur de text ≤ 100 000
Exemples
Entrée :
text = "The cat sat on the mat. The end!"
Sortie attendue :
expected = ["the", "cat", "end", "mat", "on", "sat"]
Entrée :
std::string text = "The cat sat on the mat. The end!";
Sortie attendue :
std::vector<std::string> expected = {"the", "cat", "end", "mat", "on", "sat"};
Entrée :
string text = "The cat sat on the mat. The end!";
Sortie attendue :
string[] expected = new string[] {"the", "cat", "end", "mat", "on", "sat"};
Explication
En minuscules, les mots sont the, cat, sat, on, the, mat, the, end. "the" apparaît 3 fois ; les autres apparaissent une fois et sont triés par ordre alphabétique : ["the", "cat", "end", "mat", "on", "sat"].
Entrée :
text = "AI, ai and A.I. (2024)"
Sortie attendue :
expected = ["ai", "2024", "a", "and", "i"]
Entrée :
std::string text = "AI, ai and A.I. (2024)";
Sortie attendue :
std::vector<std::string> expected = {"ai", "2024", "a", "and", "i"};
Entrée :
string text = "AI, ai and A.I. (2024)";
Sortie attendue :
string[] expected = new string[] {"ai", "2024", "a", "and", "i"};
Explication
Mots : ai, ai, and, a, i, 2024. "ai" apparaît deux fois ; les autres une fois, triés par ordre alphabétique avec les chiffres avant les lettres : ["ai", "2024", "a", "and", "i"].
Références
Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.