將整數的數字高效提取到數組中:簡明指南
問題:
給定一個整數 i,是否存在一種高效的方法將其轉換為包含其各個數字的數組?例如,將 i = 987654321 轉換為 [9, 8, 7, 6, 5, 4, 3, 2, 1],而無需使用 ToString() 和字元迭代等中間運算?
解答:
使用堆疊的遞歸解法:
<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>
使用 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>
直接基於陣列的方法:
<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>
這些方案提供了高效簡潔的方法來提取整數中的數字,從而能夠無縫地轉換為各個數字的數組。
以上是如何有效地將整數中的數字提取到數組中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!