题解 | #大数加法#

大数加法

https://www.nowcoder.com/practice/11ae12e8c6fe48f883cad618c2e81475

//使用StringBuilder进行反转
//使用"两数之和"的思路相加

public class Solution {
    public String solve (String s, String t) {
        //让s最长,t最短
        if(s.length()<t.length()){
            String temp=s;
            s=t;t=temp;          
        }
        //反转字符串
        StringBuilder ss=new StringBuilder(s).reverse();
        StringBuilder tt=new StringBuilder(t).reverse();
        StringBuilder res=new StringBuilder();
        int i=0;
        int temp=0;   //进位
        //tt字符串长度内的开始
        while(i<tt.length()){
            int stemp=ss.charAt(i)-'0';
            int ttemp=tt.charAt(i)-'0';   
            res.append((stemp+ttemp+temp)%10);
            temp=(stemp+ttemp+temp)/10;       
            i++;
        }
        //tt字符串长度以后的开始
        while(i<ss.length()){
            int stemp=ss.charAt(i)-'0';
            res.append((stemp+temp)%10);
            temp=(stemp+temp)/10;       
            i++;
        }  
        //还有进位的情况
        if(temp!=0){
            res.append(temp);
        }
        return res.reverse().toString();
    }
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务