ホームページ > バックエンド開発 > C++ > 整数から配列に数字を効率的に抽出するにはどうすればよいですか?

整数から配列に数字を効率的に抽出するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-12 16:22:43
オリジナル
870 人が閲覧しました

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

整数を配列に効率的に抽出する: 簡潔なガイド

質問:

整数 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート