首页 > 后端开发 > 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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板