题解 | #大数加法#

大数加法

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

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 计算两个数之和
     * @param s string字符串 表示第一个整数
     * @param t string字符串 表示第二个整数
     * @return string字符串
     */
    public String solve (String s, String t) {
        //思路1:直接把字符串转成对应的浮点数类型 //会直接溢出不可行
        //思路2:取部分分段然后相加 //时间超了
	    /*最后是把普通字符串ans改成了运行效率更好的StringBuilder类,
		原因是String在进行加法是不断开辟对象,然后把对象删除的过程
		String a(原);
		a(左)=a(原的地址)+1;
		a(原)先开一个空间,然后a(左)开一个空间并获得a(原)的值+1,
		然后把a(原)的地址直接回收了,只保留a(左)的地址作为变量a的地址,
		所以时间比较久。至于StringBuilder,则不用开一个新的空间,
		也不用回收空间,只是在改变自己,在原本的地址修改参数,自然效率要高很多。
		
		
		
		*/
        int s1=s.length();
        int t1=t.length();
        int docker=0;
        StringBuilder res = new StringBuilder();
        String ans="";
        //取最大长度
        int len=s1>t1?s1:t1;

        for(int i=s1-1,j=t1-1;len>0||docker!=0;i--,j--,len--)
        {
           
            int temps=0;
            int tempt=0;
            if(i>=0)
            {
                String a1=String.valueOf(s.charAt(i));
                temps=Integer.parseInt(a1); 
            }
            if(j>=0)
            {
                String a2=String.valueOf(t.charAt(j));
                tempt=Integer.parseInt(a2); 
            }                    

            int tempans=temps+tempt+docker;
            docker=tempans>=10?1:0;
    
            int charans = tempans%10;
            res.insert(0,charans);
        }
        return (res.toString());
        // write code here
    }
}

全部评论

相关推荐

我是小红是我:学校换成中南
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务