JavaScript 大資料相加的問題

來源:互聯網
上載者:User

同樣是一道面試題,來自有道前端的面試。
寫一個函數處理大資料的相加問題,所謂的大資料是指超出了整型,長整型之類的常規資料類型表示範圍的資料。實現語言不限。
我是用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:其實吧,這個面試題被我改編了下,原始的面試題主考官提示了用字串儲存大資料的,這個其實降低難度了~~

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.