Maison > développement back-end > C++ > Comment convertir efficacement un entier en un tableau de ses chiffres en C# ?

Comment convertir efficacement un entier en un tableau de ses chiffres en C# ?

Patricia Arquette
Libérer: 2025-01-12 16:27:44
original
704 Les gens l'ont consulté

How to Efficiently Convert an Integer to an Array of its Digits in C#?

Méthode efficace de tableau entier vers numérique en C#

En programmation, il est souvent nécessaire d'extraire des nombres individuels à partir d'entiers. Il existe des moyens plus simples et plus efficaces de procéder que de convertir un nombre en chaîne, puis de l'analyser caractère par caractère en un entier.

Par exemple, supposons qu'il existe une variable entière i avec une valeur de 987654321. La tâche consiste à créer un tableau d'entiers is représentant chaque chiffre du nombre, ce qui donne [9, 8, 7, 6, 5, 4, 3, 2, 1].

Solution récursive basée sur une pile :

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

    var numbers = NumbersIn(value / 10);

    numbers.Push(value % 10);

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

Cette solution utilise la récursion pour diviser le nombre en chiffres individuels. Il continue de diviser le nombre par 10 et de placer le reste (le dernier chiffre) sur la pile. Une fois que le nombre atteint 0, la récursion s'arrête, laissant une pile contenant le nombre d'origine.

Solution non récursive utilisant stack :

<code class="language-csharp">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

Cette approche évite la récursion et utilise une pile dans le même but. Il divise itérativement le nombre par 10 et pousse le reste sur la pile jusqu'à ce que le nombre atteigne 0. Enfin, le contenu de la pile est converti en un tableau d'entiers.

Solution non récursive basée sur un tableau :

<code class="language-csharp">private static int[] NumbersIn(int 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 = digits - 1; counter >= 0; counter--)
    {
        buffer[counter] = value % 10;
        value /= 10;
    }
    return buffer;
}</code>
Copier après la connexion

Cette solution opère directement sur le tableau pour stocker les chiffres des nombres. Il compte les nombres de manière itérative, alloue le tableau et stocke chaque nombre au bon emplacement. Cette méthode fournit un moyen direct et efficace d’extraire des nombres individuels à partir d’entiers.

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