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!