Somme des chiffres de la chaîne après la conversion

王林
Libérer: 2024-09-04 06:41:01
original
1188 Les gens l'ont consulté

Sum of Digits of String After Convert

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 :

  1. 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
  2. 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 :

  1. 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.
  2. 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.
  3. 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:

    1. 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.
    2. 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 :

    • LinkedIn
    • GitHub

    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!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!