Maison  >  Article  >  développement back-end  >  . Entier en mots anglais

. Entier en mots anglais

PHPz
PHPzoriginal
2024-08-08 07:00:12779parcourir

. Integer to English Words

273. Entier en mots anglais

Dur

Thèmes : Mathématiques, Chaînes, Récursion

Convertissez un nombre entier non négatif en sa représentation de mots anglais.

Exemple 1 :

  • Entrée : num = 123
  • Sortie : "Cent vingt-trois"

Exemple 2 :

  • Entrée : num = 12345
  • Sortie : "Douze mille trois cent quarante-cinq"

Exemple 3 :

  • Entrée : num = 1234567
  • Sortie : "Un million deux cent trente-quatre mille cinq cent soixante-sept"

Contraintes :

  • 0 <= num <= 231 - 1

Indice :

  1. Avez-vous vu une tendance dans la division du nombre en morceaux de mots ? Par exemple, 123 et 123000.
  2. Regroupez le numéro par milliers (3 chiffres). Vous pouvez écrire une fonction d'assistance qui prend un nombre inférieur à 1 000 et convertir uniquement ce morceau en mots.
  3. Il existe de nombreux cas extrêmes. Quels sont les bons cas de test ? Votre code fonctionne-t-il avec une entrée telle que 0 ? Ou 1000010 ? (le morceau du milieu est nul et ne doit pas être imprimé)

Solution :

Pour résoudre ce problème, nous pouvons suivre ces étapes :

  1. Définissez les mots pour les nombres : Nous avons besoin de tableaux pour les mots représentant des groupes de chiffres simples, d'adolescents, de dizaines et de milliers.

  2. Créez une fonction d'assistance : Cette fonction gérera les nombres inférieurs à 1000, les convertissant en mots anglais.

  3. Fonction récursive : La fonction principale traitera de manière récursive des morceaux du nombre, en ajoutant l'étiquette de groupe de milliers appropriée (par exemple, Millier, Million, Milliard).

  4. Cas extrêmes : Gérez les cas extrêmes comme 0 et les nombres où les morceaux intermédiaires sont nuls.

Implémentons cette solution en PHP : 273. Entier vers mots anglais






Explication:

  1. Fonction principale (numberToWords) :

    • Vérifie si le nombre saisi est 0 et renvoie "Zéro".
    • Initialise le tableau des milliers avec les étiquettes pour mille regroupements.
    • Traite de manière itérative le nombre en morceaux de milliers, en utilisant la fonction d'assistance pour convertir chaque morceau en mots.
    • Construit la chaîne de résultat final en combinant les mots de chaque morceau avec l'étiquette de mille groupes appropriée.
  2. Fonction d'assistance (helper) :

    • Utilise des tableaux prédéfinis pour les nombres inférieurs à 20 et pour les dizaines multiples.
    • Construit de manière récursive les mots anglais pour les nombres inférieurs à 1000 :
      • Pour les nombres inférieurs à 20, renvoie directement le mot correspondant.
      • Pour les nombres inférieurs à 100, combine le mot pour la place des dizaines avec le résultat d'un appel récursif pour la place des unités.
      • Pour les nombres 100 et plus, combine le mot pour la place des centaines avec le résultat d'un appel récursif pour le reste.

Cette solution gère efficacement les contraintes et les cas extrêmes, fournissant la représentation correcte des mots anglais pour n'importe quel nombre dans la plage donnée.

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