Problema
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.
Vincoli
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.
Esempi
Input:
phrase = "central-processing unit"
Output atteso:
expected = "CPU"
Input:
std::string phrase = "central-processing unit";
Output atteso:
std::string expected = "CPU";
Input:
string phrase = "central-processing unit";
Output atteso:
string expected = "CPU";
Spiegazione
The hyphen and space separate central, processing, and unit. Their initials are C, P, and U.
Input:
phrase = "don't repeat yourself"
Output atteso:
expected = "DRY"
Input:
std::string phrase = "don't repeat yourself";
Output atteso:
std::string expected = "DRY";
Input:
string phrase = "don't repeat yourself";
Output atteso:
string expected = "DRY";
Spiegazione
Remove the apostrophe to obtain dont. It is still one word, followed by repeat and yourself.
Come affrontarlo
Prova prima da solo, poi apri un suggerimento alla volta.
Suggerimento 1
Tratta spazi e trattini come separatori di parole, ma ignora cifre e altra punteggiatura dentro o attorno alle parole.
Suggerimento 2
Cerca la prima lettera dopo ogni separatore e rendila maiuscola.
Suggerimento 3
Gli apostrofi dentro una parola non devono creare una nuova parola, e i blocchi vuoti vanno saltati.
Complessità attesa
tempo O(n), spazio aggiuntivo O(n)
Riferimenti
Questa sfida è adattata per CodeUtility. Segui la traccia e i vincoli sopra.