1945. Somme des chiffres de la chaîne après conversion
Difficulté :Facile
Sujets : Chaîne, Simulation
Vous recevez une chaîne s composée de lettres anglaises minuscules et d'un entier k.
Tout d'abord, convertissez s en un entier en remplaçant chaque lettre par sa position dans l'alphabet (c'est-à-dire, remplacez 'a' par 1, 'b' par 2, ..., 'z' par 26). Ensuite, transformez l'entier en le remplaçant par la somme de ses chiffres. Répétez l'opération transformation k fois au total.
Par exemple, si s = "zbax" et k = 2, alors l'entier résultant serait 8 par les opérations suivantes :
-
Convertir : "zbax" ➝ "(26)(2)(1)(24)" ➝ "262124" ➝ 262124
-
Transformation #1 : 262124 ➝ 2 + 6 + 2 + 1 + 2 + 4 ➝ 17
-
Transformation #2 : 17 ➝ 1 + 7 ➝ 8
Renvoyer l'entier résultant après avoir effectué les opérations décrites ci-dessus.
Exemple 1 :
-
Entrée : s = "iiii", k = 1
-
Sortie : 36
-
Explication : Les opérations sont les suivantes :
- Convertir : "iiii" ➝ "(9)(9)(9)(9)" ➝ "9999" ➝ 9999
- Transformation #1 : 9999 ➝ 9 + 9 + 9 + 9 ➝ 36
- Le nombre entier résultant est donc 36.
Exemple 2 :
-
Entrée : s = "leetcode", k = 2
-
Sortie : 6
-
Explication : Les opérations sont les suivantes :
- Convertir : "leetcode" ➝ "(12)(5)(5)(20)(3)(15)(4)(5)" ➝ "12552031545" ➝ 12552031545
- Transformation #1 : 12552031545 ➝ 1 + 2 + 5 + 5 + 2 + 0 + 3 + 1 + 5 + 4 + 5 ➝ 33
- Transformation #2 : 33 ➝ 3 + 3 ➝ 6
- Le nombre entier résultant est donc 6.
Exemple 3 :
-
Entrée : s = "zbax", k = 2
-
Sortie : 8
Contraintes :
- 1 <= s.length <= 100
- 1 <= k <= 10
-
s se compose de lettres anglaises minuscules.
Indice :
- Tout d'abord, notons qu'après la première transformation la valeur sera au maximum de 100*10 ce qui n'est pas grand chose
- Après la première transformation, nous pouvons simplement faire le reste des transformations par force brute
Solution :
Nous pouvons décomposer la solution en deux étapes principales :
-
Convertir la chaîne s en entier :
- Chaque caractère de la chaîne est remplacé par sa position correspondante dans l'alphabet (par exemple, 'a' -> 1, 'b' -> 2, ..., 'z' -> 26).
- Concaténez tous ces nombres pour former un grand entier.
-
Transformer l'entier en additionnant ses chiffres k fois:
- Pour chaque transformation, additionnez tous les chiffres du nombre actuel.
- Répétez ce processus de transformation k fois.
Implémentons cette solution en PHP : 1945. Somme des chiffres de la chaîne après conversion
<?php
function getLucky($s, $k) {
...
...
...
/**
* go to ./solution.php
*/
}
// Test cases
echo getLucky("iiii", 1) . "\n"; // Output: 36
echo getLucky("leetcode", 2) . "\n"; // Output: 6
echo getLucky("zbax", 2) . "\n"; // Output: 8
?>
Copier après la connexion
Explication:
-
Convertir la chaîne :
- Nous parcourons chaque caractère de la chaîne s et calculons sa position alphabétique correspondante en utilisant ord($s[$i]) - ord('a') + 1.
- Ces valeurs sont concaténées pour former une grande chaîne numStr représentant le nombre.
-
Transformez le nombre :
- Nous bouclons k fois, en additionnant à chaque fois les chiffres du numStr actuel.
- Le résultat de cette opération de sommation est stocké dans numStr sous forme de chaîne pour permettre d'autres transformations.
- Après k transformations, nous renvoyons la valeur entière finale.
Cas de tests :
-
"iiii" avec k = 1 se convertit en "9999", la somme est 36, et puisque k=1, le résultat final est 36.
-
"leetcode" avec k = 2 se convertit en "12552031545", la somme est égale à 33 dans la première transformation et à 6 dans la deuxième transformation, ce qui donne 6.
-
"zbax" avec k = 2 se convertit en "262124", la somme est égale à 17 dans la première transformation et à 8 dans la deuxième transformation, ce qui donne 8.
Cette solution est efficace compte tenu des contraintes et fonctionnera bien dans les limites prévues.
Liens de contact
Si vous avez trouvé cette série utile, pensez à donner une étoile au référentiel sur GitHub ou à partager la publication sur vos réseaux sociaux préférés ?. Votre soutien signifierait beaucoup pour moi !
Si vous souhaitez du contenu plus utile comme celui-ci, n'hésitez pas à me suivre :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!