首頁 > 後端開發 > C++ > 如何有效地將整數中的數字提取到數組中?

如何有效地將整數中的數字提取到數組中?

Patricia Arquette
發布: 2025-01-12 16:22:43
原創
870 人瀏覽過

How to Efficiently Extract Digits from an Integer into an Array?

將整數的數字高效提取到數組中:簡明指南

問題:

給定一個整數 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板