最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript 大數(shù)據(jù)相加的問題

 更新時間:2011年08月03日 23:16:56   作者:  
寫一個函數(shù)處理大數(shù)據(jù)的相加問題,所謂的大數(shù)據(jù)是指超出了整型,長整型之類的常規(guī)數(shù)據(jù)類型表示范圍的數(shù)據(jù)。實(shí)現(xiàn)語言不限。
同樣是一道面試題,來自有道前端的面試。
寫一個函數(shù)處理大數(shù)據(jù)的相加問題,所謂的大數(shù)據(jù)是指超出了整型,長整型之類的常規(guī)數(shù)據(jù)類型表示范圍的數(shù)據(jù)。實(shí)現(xiàn)語言不限。
我是用js實(shí)現(xiàn)的,說一下我自己的思路:
1、首先這個題目最重要的環(huán)節(jié)在考慮怎么存儲大數(shù)據(jù)?用什么數(shù)據(jù)類型保存呢?最簡單可行的方式是String
2、確定了使用何種類型保存數(shù)據(jù)之后這個題目就明朗了。首先判斷兩個傳入字符串的長度,取最短的len循環(huán),兩者從低位開始對應(yīng)位相加,同時注意保存進(jìn)位。在短的數(shù)據(jù)處理完后,將進(jìn)位交給較長串的剩余部分處理。
詳細(xì)實(shí)現(xiàn)看一下代碼,完整實(shí)例見jsfiddle
復(fù)制代碼 代碼如下:

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:其實(shí)吧,這個面試題被我改編了下,原始的面試題主考官提示了用字符串保存大數(shù)據(jù)的,這個其實(shí)降低難度了~~

相關(guān)文章

最新評論

金乡县| 晋江市| 拜泉县| 馆陶县| 奎屯市| 高密市| 东乌珠穆沁旗| 颍上县| 内丘县| 特克斯县| 陆丰市| 绩溪县| 根河市| 隆安县| 海宁市| 渑池县| 宁远县| 金塔县| 肇东市| 公主岭市| 周宁县| 井研县| 吴江市| 天峨县| 安图县| 长顺县| 台山市| 通道| 靖安县| 玉山县| 张掖市| 兴和县| 上虞市| 罗山县| 宣城市| 陈巴尔虎旗| 滁州市| 桃江县| 开鲁县| 尚志市| 井冈山市|