整数を配列に効率的に抽出する: 簡潔なガイド
質問:
整数 i が与えられた場合、それを個々の数値を含む配列に変換する効率的な方法はありますか?たとえば、ToString() や文字反復などの中間操作を行わずに、i = 987654321 を [9, 8, 7, 6, 5, 4, 3, 2, 1] に変換します。
答え:
スタックを使用した再帰的ソリューション:
<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 中国語 Web サイトの他の関連記事を参照してください。