• 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);
        }
    }
  • 相关阅读:
    Python引入pandas报错ValueError: numpy.ufunc has the wrong size, try recompiling
    Oracle TNS无法解析ORA-12154报错
    python两个一维list列表合并
    SQL数据表加索引CREATE INDEX
    Python 格式化输出
    Python中三个双引号的作用
    2.认识素描
    如何快速学习Tableau Desktop
    1.怎样学习素描
    正点原子嵌入式Linux笔记3——Ubuntu软件安装
  • 原文地址:https://www.cnblogs.com/juniorMa/p/15879357.html
Copyright © 2020-2023  润新知