大数加法(算法)

目的:将两个String类型的数相加返回一个String类型数据

public String maxAdd(String s,String t){

    int tmp=0;//进位数
    int sl = s.length()-1;
    int tl = t.length()-1;
    StringBuffer sb = new StringBuffer();//返回结果对象

    if(sl>=0 || tl>=0 || tmp!=0){
        int x = s.charAt(s1--) - '0';//转为十进制数
        int y = t.charAt(tl--) - '0';//转为十进制数
        int sum = x+y+tmp;//低位相加
        sb.insert(0,sum%10);//获取每次最后一位
        tmp = sum/10;//获取进位
    }
    return sb.toString();
}

代码分析

 

 

 (1)首先x=8,y=2,tmp=0;

     sum = 8+2+0 = 10;

     StringBuffer底层使用char[]

 

         tmp = 1;

(2)x=9,y=1,tmp=1;

         sum = 9+1+1 = 11;

 

         tmp = 1;

(3)x=0,y=0,tmp=1;

         sum = 0+0+1 = 1;

 

         tmp = 0;

返回110

 

 

 

         

posted @ 2022-01-10 15:34  Q子  阅读(84)  评论(0)    收藏  举报