JavaScript 大数据相加的问题_Javascript教程-查字典教程网
JavaScript 大数据相加的问题
JavaScript 大数据相加的问题
发布时间:2016-12-30 来源:查字典编辑
摘要:同样是一道面试题,来自有道前端的面试。写一个函数处理大数据的相加问题,所谓的大数据是指超出了整型,长整型之类的常规数据类型表示范围的数据。实...

同样是一道面试题,来自有道前端的面试。

写一个函数处理大数据的相加问题,所谓的大数据是指超出了整型,长整型之类的常规数据类型表示范围的数据。实现语言不限。

我是用js实现的,说一下我自己的思路:

1、首先这个题目最重要的环节在考虑怎么存储大数据?用什么数据类型保存呢?最简单可行的方式是String

2、确定了使用何种类型保存数据之后这个题目就明朗了。首先判断两个传入字符串的长度,取最短的len循环,两者从低位开始对应位相加,同时注意保存进位。在短的数据处理完后,将进位交给较长串的剩余部分处理。

详细实现看一下代码,完整实例见jsfiddle

复制代码 代码如下:

var strAdd = function(srcA, srcB) {

var i, temp, tempA, tempB, len, lenA, lenB, carry = 0;

var res = [],

arrA = [],

arrB = [],

cloneArr = [];

arrA = srcA.split('');

arrB = srcB.split('');

arrA.reverse();

arrB.reverse();

lenA = arrA.length;

lenB = arrB.length;

len = lenA > lenB ? lenB : lenA;

for (i = 0; i < len; i++) {

tempA = parseInt(arrA[i], 10);

tempB = parseInt(arrB[i], 10);

temp = tempA + tempB + carry;

if (temp > 9) {

res.push(temp - 10);

carry = 1;

} else {

res.push(temp);

carry = 0;

}

}

cloneArr = lenA > lenB ? arrA : arrB;

for (; i < cloneArr.length; i++) {

tempA = parseInt(cloneArr[i], 10);

temp = tempA + carry;

if (temp > 9) {

res.push(temp - 10);

carry = 1;

} else {

res.push(temp);

carry = 0;

}

}

return (res.reverse()).join('');

};

以上。

PS:其实吧,这个面试题被我改编了下,原始的面试题主考官提示了用字符串保存大数据的,这个其实降低难度了~~

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Javascript教程学习
    热门Javascript教程学习
    编程开发子分类