Problème
Add the tile values for every letter in a word. Ignore case. There are no board multipliers or wildcard tiles.
Letter values:
A, E, I, O, U, L, N, R, S, T: 1 point each.
D, G: 2 each.
B, C, M, P: 3 each.
F, H, V, W, Y: 4 each.
K: 5. J, X: 8 each. Q, Z: 10 each.
Implement word_tile_score(word).
Input
word: The word to score.
Output
Return the sum of all letter values.
Contraintes
0 ≤ word length ≤ 10,000. Only ASCII letters are allowed. Empty input scores 0.
Exemples
Entrée :
word = "code"
Sortie attendue :
expected = 7
Entrée :
std::string word = "code";
Sortie attendue :
long long expected = 7;
Entrée :
string word = "code";
Sortie attendue :
long expected = 7;
Explication
C is worth 3, O is 1, D is 2, and E is 1: 3 + 1 + 2 + 1 = 7.
Entrée :
word = "Quiz"
Sortie attendue :
expected = 22
Entrée :
std::string word = "Quiz";
Sortie attendue :
long long expected = 22;
Entrée :
string word = "Quiz";
Sortie attendue :
long expected = 22;
Explication
Case does not matter. Q + U + I + Z gives 10 + 1 + 1 + 10 = 22.
Comment l'aborder
Essayez d'abord seul, puis ouvrez les indices un par un.
Indice 1
Chaque lettre a une valeur fixe, donc calculez le score du mot en additionnant les poids caractère par caractère.
Indice 2
Une table de correspondance insensible à la casse rend le mapping simple et rapide.
Indice 3
Vérifiez que toutes les lettres autorisées sont couvertes, y compris les tuiles Q et Z à forte valeur.
Complexité attendue
temps O(n), espace supplémentaire O(1)
Références
Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.