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