You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不使用字符串转换从数字数组/列表中获取对应的整数值

不使用字符串方法合并数字数组为整数的简便实现

你原本按位权累加的思路是完全正确的,只是可以优化成更简洁的单遍遍历逻辑,不需要提前计算每个数字对应的位权:
核心逻辑非常简单:初始化累计结果为0,每遍历到数组里的一个数字,就把当前累计的结果乘以10(相当于所有已处理的数位整体左移一位,腾出个位位置),再加上当前遍历到的数字即可。

以你举的[5,6]为例,计算过程是:

  • 初始累计值res = 0
  • 处理第一个数字5:res = 0 * 10 + 5 = 5
  • 处理第二个数字6:res = 5 * 10 + 6 = 56
    一次遍历就能得到最终结果,哪怕数组更长也完全适配,比如输入[1,2,3,4],按这个逻辑会依次算出1、12、123、1234,完全不需要提前统计数组长度算总位权。

不同语言的实现代码参考:

// JavaScript 实现
const mergeToInt = (arr) => {
  let res = 0
  for (const n of arr) res = res * 10 + n
  return res
}

mergeToInt([5,6]) // 输出56
# Python 实现
def merge_to_int(arr):
    res = 0
    for num in arr:
        res = res * 10 + num
    return res

merge_to_int([5,6]) # 返回56

这个方案的优势很明显:

  • 全程只有数值运算,完全不涉及字符串相关操作,符合你的要求
  • 仅需一次遍历,时间复杂度O(n),额外空间复杂度O(1),不管是代码量还是运行效率都比预计算位权、字符串转写的方案更好
  • 逻辑通用,只要数组内的元素都是0-9的单个有效数字,不管数组长度多少都能正确输出结果

注意:整数本身不存储前导零,如果数组开头有0(比如输入[0,0,5,6]),最终输出会是整数56,这是整数类型本身的特性,不是逻辑错误。如果需要保留前导零的固定长度输出,那本身就不属于纯整数结果的需求范畴。

内容的提问来源于stack exchange,提问作者knight6231 awz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 06:09:21