如何不使用字符串转换从数字数组/列表中获取对应的整数值
不使用字符串方法合并数字数组为整数的简便实现
你原本按位权累加的思路是完全正确的,只是可以优化成更简洁的单遍遍历逻辑,不需要提前计算每个数字对应的位权:
核心逻辑非常简单:初始化累计结果为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
相关产品推荐
相关产品推荐

