Heim > Backend-Entwicklung > C++ > Wie konvertiert man eine ganze Zahl in C# effizient in ein Array ihrer Ziffern?

Wie konvertiert man eine ganze Zahl in C# effizient in ein Array ihrer Ziffern?

Patricia Arquette
Freigeben: 2025-01-12 16:27:44
Original
705 Leute haben es durchsucht

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

Effiziente Ganzzahl-zu-Numerische-Array-Methode in C#

Bei der Programmierung ist es oft notwendig, einzelne Zahlen aus ganzen Zahlen zu extrahieren. Es gibt einfachere und effizientere Möglichkeiten, dies zu tun, als eine Zahl in eine Zeichenfolge umzuwandeln und sie dann Zeichen für Zeichen in eine Ganzzahl zu analysieren.

Angenommen, es gibt eine Ganzzahlvariable i mit dem Wert 987654321. Die Aufgabe besteht darin, ein Array von Ganzzahlen is zu erstellen, die jede Ziffer der Zahl darstellen, was zu [9, 8, 7, 6, 5, 4, 3, 2, 1] führt.

Stapelbasierte rekursive Lösung:

<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>
Nach dem Login kopieren

Diese Lösung verwendet Rekursion, um die Zahl in einzelne Ziffern zu zerlegen. Es dividiert die Zahl immer wieder durch 10 und schiebt den Rest (die letzte Ziffer) auf den Stapel. Sobald die Zahl 0 erreicht, stoppt die Rekursion und es bleibt ein Stapel zurück, der die ursprüngliche Zahl enthält.

Nicht rekursive Lösung mit 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>
Nach dem Login kopieren

Dieser Ansatz vermeidet Rekursion und verwendet einen Stapel für denselben Zweck. Es dividiert die Zahl iterativ durch 10 und schiebt den Rest auf den Stapel, bis die Zahl 0 erreicht. Abschließend wird der Inhalt des Stapels in ein Array von Ganzzahlen umgewandelt.

Array-basierte nicht-rekursive Lösung:

<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>
Nach dem Login kopieren

Diese Lösung arbeitet direkt am Array, um die Ziffern der Zahlen zu speichern. Es zählt iterativ die Zahlen, weist das Array zu und speichert jede Zahl am richtigen Ort. Diese Methode bietet eine direkte und effiziente Möglichkeit, einzelne Zahlen aus ganzen Zahlen zu extrahieren.

Das obige ist der detaillierte Inhalt vonWie konvertiert man eine ganze Zahl in C# effizient in ein Array ihrer Ziffern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage