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
Patricia Arquetteoriginal
2025-01-12 16:22:43906parcourir

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>

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>

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>

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!

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