题解 | #大数加法#

大数加法

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
};

全部评论

相关推荐

牛大宝儿236:还没入职就PUA,[发火我之前遇到一个月给500块钱的
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务