415. 字符串相加

给定两个字符串形式的非负整数 num1num2 ,计算它们的和。

提示:

  1. num1num2 的长度都小于 5100
  2. num1num2 都只包含数字 0-9
  3. num1num2 都不包含任何前导零
  4. 你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式

根据朴素的加法思想,关键在于模拟竖式计算,用一个字符串存储进位,每一列超过十进位。

注意要对齐,在短的字符串首部补零。字符串的生成使用拼接的方法。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 public static String addStrings(String num1, String num2) {
   
        String numjinwei="0";
        String addsum="";
        int n1=num1.length();
        int n2=num2.length();


        if(n1>n2) for(int i=0;i<n1-n2;i++) num2="0"+num2;
        else for(int i=0;i<n2-n1;i++) num1="0"+num1;
//对齐
        int n_max=Integer.max(n1,n2);
       
        int jinwei=0;
        for(int i=0;i<n_max;i++){
            int temp_lenthof_numjinwei=numjinwei.length();
            int t1=num1.charAt(n_max-1-i)-48;

            int t2=num2.charAt(n_max-1-i)-48;
            int t3=numjinwei.charAt(temp_lenthof_numjinwei-1-i)-48;
            int temp=t1+t2+t3;
            jinwei=temp/10;
            int val=temp%10;
            numjinwei=jinwei+numjinwei;

            addsum=val+addsum;
        }
        if(jinwei==1){
            addsum=jinwei+addsum;
        }
        return addsum;
    }