Maison > développement back-end > C++ > Comment extraire efficacement les chiffres d'un entier dans un tableau ?

Comment extraire efficacement les chiffres d'un entier dans un tableau ?

Patricia Arquette
Libérer: 2025-01-12 16:22:43
original
869 Les gens l'ont consulté

How to Efficiently Extract Digits from an Integer into an Array?

Extraire efficacement des entiers dans des tableaux : un guide concis

Question :

Étant donné un entier i, existe-t-il un moyen efficace de le convertir en un tableau contenant ses nombres individuels ? Par exemple, convertir i = 987654321 en [9, 8, 7, 6, 5, 4, 3, 2, 1] sans opérations intermédiaires comme ToString() et itération de caractères ?

Réponse :

Solution récursive utilisant stack :

<code class="language-c#">public Stack<int> NumbersIn(int value)
{
    if (value == 0) return new Stack<int>();

    var numbers = NumbersIn(value / 10);

    numbers.Push(value % 10);

    return numbers;
}

var numbers = NumbersIn(987654321).ToArray();</code>
Copier après la connexion

Une autre solution utilisant une boucle for :

<code class="language-c#">public int[] NumbersIn(int value)
{
    var numbers = new Stack<int>();

    for(; value > 0; value /= 10)
        numbers.Push(value % 10);

    return numbers.ToArray();
}</code>
Copier après la connexion

Méthode directe basée sur un tableau :

<code class="language-c#">private static int[] NumbersIn(int value)
{
  // 处理 value 为 0 或负数的特殊情况
  if (value == 0)
  {
    return new int[] { 0 };
  }

  value = Math.Abs(value);

  // 确定数字位数
  var digits = 1 + (int)Math.Log10(value);

  // 预分配数组
  var buffer = new int[digits];

  // 迭代并填充数组
  for (var counter = 0; counter < digits; counter++)
  {
    buffer[digits - 1 - counter] = value % 10;
    value /= 10;
  }

  return buffer;
}</code>
Copier après la connexion

Ces solutions offrent des moyens efficaces et concis d'extraire des nombres à partir d'entiers, permettant une conversion transparente en tableaux de nombres individuels.

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:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal