抱着嘗試一下的心態投了微信的前端簡歷,沒想到還收到了面試邀請,僅以此文記錄一下面試過程當中遇到的問題javascript
請你用 javascript 實現兩個字符串數字相加(大數相加)?前端
分析:這道題考查兩個超過js最大數值的數相加,可運用小學數學加法規律實現java
實現方法:面試
function add(a, b) {
// 看看兩個字符串長度相差多少,小的在前面補0, 如 10000 和 1, 補0後爲 10000 和 00001
let leng = Math.abs(a.length - b.length);
if (a.length > b.length) {
b = Array(leng).join('0') + '0' + b;
} else if (a.length < b.length) {
a = Array(leng).join('0') + '0' + a;
}
// 將字符串轉化爲數組而且倒裝,如同小學加法從個位開始算起
let textArrA = a.split('').reverse(),
textArrB = b.split('').reverse(),
resultArr = [];
// 對數組進行循環
for (let i = 0; i < a.length; i++) {
// 求和,和小於10,則將和放進目標數組,若大於10,將除以10將餘數放進目標數組,而後textArrA數組的下一位 + 1(textArrB數組也能夠,選一個便可)
let sum = parseInt(textArrA[i]) + parseInt(textArrB[i]);
// 這裏判斷是不是最高位數值相加,即i === a.length - 1, 若是是不用取餘直接放進去
if (parseInt(sum / 10) === 0 || i === a.length - 1) {
resultArr.push(sum);
} else {
resultArr.push(sum % 10);
textArrA[i + 1] = parseInt(textArrA[i + 1]) + 1;
}
}
// 最後將目標數組倒裝一下,再轉成字符串
return resultArr.reverse().join('');
}
console.log(add('1045747', '10')); // 1045757
複製代碼
期待大家的答覆!數組
個人博客即將同步至騰訊雲+社區,邀請你們一同入駐:cloud.tencent.com/developer/s…緩存