题解 | #大数加法#
大数加法
https://www.nowcoder.com/practice/11ae12e8c6fe48f883cad618c2e81475
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 计算两个数之和 * @param s string字符串 表示第一个整数 * @param t string字符串 表示第二个整数 * @return string字符串 */ '788889' '78906789' // 大数相加 function solve( s , t ) { // write code here let arrS = s.split('').reverse(),arrT = t.split('').reverse()//由于个位数在字符串末尾,所以需要进行字符串翻转,并转化成数组方便遍历 let arr =[]//定义一个用来保存每位相加之后的结果(10取余%之后的结果) let len =Math.max(arrS.length,arrT.length)//最长的字符串结果进行遍历,确保遍历完 let i =0,sum=0;//sum是中间变量 let temp = 0//溢出的进行保存,下次遍历开始的时候加上 while(i<len)//遍历到最长字符串最后一位为止 { sum= Number(arrS[i]||0)+Number(arrT[i]||0)+temp temp=0//相加之后给赋0值,避免产生不必要的数据错误 arr[i]=sum%10 temp=parseInt(sum/10)//只取整数 i++//循环进行 } if(temp)//这一步主要是如果结果大于最大子串,那么直接在后面添加最高位 { arr.push(temp) } return arr.reverse().join('')//前面是翻转之后相加的,现在结果就是要翻转回来再转化成字符串输出 } module.exports = { solve : solve };