Maison >développement back-end >tutoriel php >Somme des chiffres de la chaîne après la conversion

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

王林
王林original
2024-09-04 06:41:011226parcourir

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
    ?>
    

    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!

Déclaration:
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