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>
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>
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>
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!