题解 | 大数加法

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 计算两个数之和
     * @param s string字符串 表示第一个整数
     * @param t string字符串 表示第二个整数
     * @return string字符串
     */
   public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        String t = sc.nextLine();
        System.out.println(new Solution().solve(s,t));
    }
    
    public String solve (String s, String t) {
        if (s.length() == 0 && t.length() == 0){
            return "0";
        } else if (s.length() == 0 || t.length() == 0){
            return s+t;
        } else {
            int flag = 0;
            String res = "";
            if (s.length() < t.length()) {
                String temp = s;
                s = t;
                t = temp;
            }
            int i,j;
            StringBuilder sb = new StringBuilder();

            for (i = s.length() - 1, j = t.length() - 1; i >= 0 && j >= 0 ; i--,j--) {
                char c = s.charAt(i);
                char d = t.charAt(j);
                int m = Integer.parseInt(String.valueOf(c));
                int n = Integer.parseInt(String.valueOf(d));
                if (m+n+flag < 10){
                    sb.append(m+n+flag);
                    flag = 0;
                } else {
                    sb.append((m+n+flag)%10);
                    flag = 1;
                }
            }

            for (int k=i; k >= 0; k--) {
                char c = s.charAt(k);
                int m = Integer.parseInt(String.valueOf(c));
                if (m+flag < 10){
                    sb.append(m+flag);
                    flag = 0;
                } else {
                    sb.append((m+flag)%10);
                    flag = 1;
                }
            }

            if (flag == 1){
                sb.append(flag);
            }

            return sb.reverse().toString();

        }

    }

}

全部评论

相关推荐

评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务