NC_1_BIGDATA_ADD

package org.example.interview.practice;

import java.util.Stack;

/**
 * @author xianzhe.ma
 * @date 2021/9/2
 */

public class NC_1_BIGDATA_ADD {

    public static String solve (String s, String t) {
        // write code here
        int size1 = s.length();
        int size2 = t.length();

        Stack<String> stack = new Stack<>();
        char[] charArray1 = s.toCharArray();
        char[] charArray2 = t.toCharArray();

        int i = size1 - 1;
        int j = size2 - 1;
        int remainder = 0;
        int temp = 0;
        while (i >= 0 && j >= 0) {
            char value1 = charArray1[i];
            char value2 = charArray2[j];
            temp = Integer.valueOf(String.valueOf(value1)) + Integer.valueOf(String.valueOf(value2));

            if (temp + remainder > 9) {
                temp = (temp + remainder) %10;
                remainder = 1;
            } else {
                temp = temp + remainder;
                remainder = 0;

            }

            stack.push(String.valueOf(temp));
            i--;
            j--;
        }
        //循环结束,且两组字符串都处理完了,查看有没有进位
        if (i <0 && j < 0) {
            if (remainder == 1) {
                stack.push(String.valueOf(remainder));
            }
        }
        //某一个字符有剩余继续处理
        if ( i >=0) {
            String s1 = s.substring(0,i+1);
            if (remainder > 0) {

                char[] arr1 = s1.toCharArray();
                int size = s1.length();
                Integer temp1 = 0;
                for (int k=size-1;k>=0;k--) {
                    temp1 = Integer.valueOf(String.valueOf(arr1[k]));
                    temp1 = temp1 + remainder;
                    remainder = temp1 / 10;
                    temp1 = temp1 % 10;
                    stack.push(String.valueOf(temp1));
                }
                if (remainder > 0) {
                    stack.push(String.valueOf(remainder));
                }
            } else {
                stack.push(s1);
            }
        }
        //某一个字符有剩余继续处理
        if ( j >=0) {
            String s1 = t.substring(0,j+1);
            if (remainder > 0) {

                char[] arr1 = s1.toCharArray();
                int size = s1.length();
                Integer temp1 = 0;
                for (int k=size-1; k>=0; k--) {
                    temp1 = Integer.valueOf(String.valueOf(arr1[k]));
                    temp1 = temp1 + remainder;
                    remainder = temp1 / 10;
                    temp1 = temp1 % 10;
                    stack.push(String.valueOf(temp1));
                }
                if (remainder > 0) {
                    stack.push(String.valueOf(remainder));
                }
            } else {
                stack.push(s1);
            }
        }
        StringBuilder strBuilder = new StringBuilder();
        while (!stack.isEmpty()) {
            strBuilder.append(stack.pop());
        }

        return strBuilder.toString();
    }

    public static void main (String[] args) {
        String s1 = "733064366";
        String s2 = "459309139";
        System.out.println(solve(s1, s2));

        String newStr = String.join("-", s1, s2);
        System.out.println(newStr);
    }
}

 

posted on 2022-02-10 15:33  MaXianZhe  阅读(25)  评论(0编辑  收藏  举报

导航