Problème
Create an acronym from the first letter of every word, in uppercase. Spaces and hyphens separate words. Remove every other punctuation mark and digit without adding a separator; an apostrophe inside a word does not start another word. Ignore empty pieces.
Implement acronym_generator(phrase).
Input
phrase: The phrase to shorten.
Output
Return the uppercase initials in their original order.
Contraintes
0 ≤ phrase length ≤ 10,000. Input contains ASCII letters, digits, spaces, and punctuation; no tabs or line breaks. A phrase with no letters returns empty text.
Exemples
Entrée :
phrase = "central-processing unit"
Sortie attendue :
expected = "CPU"
Entrée :
std::string phrase = "central-processing unit";
Sortie attendue :
std::string expected = "CPU";
Entrée :
string phrase = "central-processing unit";
Sortie attendue :
string expected = "CPU";
Explication
The hyphen and space separate central, processing, and unit. Their initials are C, P, and U.
Entrée :
phrase = "don't repeat yourself"
Sortie attendue :
expected = "DRY"
Entrée :
std::string phrase = "don't repeat yourself";
Sortie attendue :
std::string expected = "DRY";
Entrée :
string phrase = "don't repeat yourself";
Sortie attendue :
string expected = "DRY";
Explication
Remove the apostrophe to obtain dont. It is still one word, followed by repeat and yourself.
Comment l'aborder
Essayez d'abord seul, puis ouvrez les indices un par un.
Indice 1
Traitez les espaces et les tirets comme des séparateurs de mots, mais ignorez les chiffres et les autres ponctuations à l’intérieur ou autour des mots.
Indice 2
Cherchez la première lettre après chaque séparateur et mettez-la en majuscule.
Indice 3
Les apostrophes dans un mot ne doivent pas créer un nouveau mot, et les morceaux vides doivent être ignorés.
Complexité attendue
temps O(n), espace supplémentaire O(n)
Références
Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.