记得之前面试还被问到过用两个字符串实现两个大整数相加,当时还特别好奇好好的整数相加,为什么要用字符串去执行。哈哈,感觉当时自己还是很无知的,面试官肯定特别的无奈。今天在刷算法的时候,无意中看到了为什么要用两个字符串来实现大整数相加。所以,整理了一下。
Why?若两个整数很大的时候,直接用变量保存数字,则会造成溢出。这时候最常用也最容易的方法就是用字符串或者数组表示大数。
例如:输入‘189’,‘321’,返回‘510’。
这样在进行两个任意大的整数相加的时候,既不会溢出,也不会损失精度。
代码实现如下:(该解决办法是其他人写的,本人只是做了整理)
代码解析:
1. 使用split方法,将字符串转换为数组
2. 通过判断a,b,c的长度,决定是否还需要就行对应的位进行相加
3. 使用~~a.pop()的目的:保证若b的长度大于a的长度,则此时a.pop()=undefined,~~undefined=0
4. 将两个位置上的数进行相加,若大于9,则需要进位,即,将c的值存为true,这样当进行相加时,true会进行变量提升为1
5.输出最后结果的时候,由于前面可能存在0,所以使用字符串的replace方法将前面的0去掉。