大数加法

 

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 计算两个数之和
     * @param s string字符串 表示第一个整数
     * @param t string字符串 表示第二个整数
     * @return string字符串
     */
    public String solve (String s, String t) {
        // write code here
        // 两个字符串逆序,新建结果数组,
        // 先计算最后一位数字,逢十进1,再计算倒数第二个,依次计算,直到第一个数字        
        String s_reverse = new StringBuffer(s).reverse().toString();
        String t_reverse = new StringBuffer(t).reverse().toString();
        int max_len = s_reverse.length()>t_reverse.length()?s_reverse.length():t_reverse.length();
        int[] arr = new int[100001];
        for(int i=0; i<max_len; i++){
            int a = 0;
            int b = 0;
            if(i<s_reverse.length()){
                a = Integer.parseInt(String.valueOf(s_reverse.charAt(i)));
            }
            if(i<t_reverse.length()){
                b =Integer.parseInt(String.valueOf(t_reverse.charAt(i)));    
            }
            int c = a + b + arr[i];
            arr[i] = c%10;
            arr[i+1] = c/10;
            System.out.println(arr[i]);
        }

        StringBuffer sb = new StringBuffer();
        System.out.println(arr[max_len]);
        if(arr[max_len]!=0 ){
            sb.append(arr[max_len]);
        }
        for(int k=max_len-1; k>=0; k--){
            sb.append(arr[k]);
        }
        
        return sb.toString();
    }
}

 

posted @ 2022-11-11 09:52  northli  阅读(14)  评论(0编辑  收藏  举报