国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript 大數據相加的問題

2019-11-20 23:43:59
字體:
來源:轉載
供稿:網友
同樣是一道面試題,來自有道前端的面試。
寫一個函數處理大數據的相加問題,所謂的大數據是指超出了整型,長整型之類的常規數據類型表示范圍的數據。實現語言不限。
我是用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:其實吧,這個面試題被我改編了下,原始的面試題主考官提示了用字符串保存大數據的,這個其實降低難度了~~
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 嵩明县| 井冈山市| 开封市| 喜德县| 察雅县| 屏东县| 青铜峡市| 张家界市| 尤溪县| 桑日县| 仪陇县| 广河县| 双鸭山市| 安溪县| 沈阳市| 淮安市| 兰溪市| 江门市| 巍山| 宁强县| 莱西市| 军事| 中牟县| 云浮市| 育儿| 阿尔山市| 重庆市| 永吉县| 安岳县| 荥经县| 安岳县| 石首市| 梅州市| 新蔡县| 尉犁县| 托克托县| 武邑县| 大英县| 庆安县| 黔江区| 云南省|