Google/LintCode:E-Big Integer Addition

来源:互联网 发布:js1-400拌和机技术数据 编辑:程序博客网 时间:2024/06/07 23:59

题目


题目来源:Link


Given two non-negative integers num1 and num2represented as string, return the sum of num1 and num2.

 注意事项
  • The length of both num1 and num2 is < 5100.
  • Both num1 and num2 contains only digits 0-9.
  • Both num1 and num2 does not contain any leading zero.
  • You must not use any built-in BigInteger library or convert the inputs to integer directly.
样例

Given num1 = "123", num2 = "45"
return "168"


代码


(1)用Java内置BigInteger

import java.math.BigInteger;public class Solution {    /**     * @param num1 a non-negative integers     * @param num2 a non-negative integers     * @return return sum of num1 and num2     */    public String addStrings(String num1, String num2) {        // Write your code here        BigInteger bnum1 = new BigInteger(num1);        BigInteger bnum2 = new BigInteger(num2);        BigInteger sum = bnum1.add(bnum2);        return sum.toString();    }}



(2)自己实现大数

import java.math.BigInteger;public class Solution {    /**     * @param num1 a non-negative integers     * @param num2 a non-negative integers     * @return return sum of num1 and num2     */    public String addStrings(String num1, String num2) {        // Write your code here        int n1 = num1.length();        int n2 = num2.length();        int n = Math.min(n1,n2);        String rnum1 = new StringBuffer(num1).reverse().toString();        String rnum2 = new StringBuffer(num2).reverse().toString();        String res="";        int up = 0;        int i=0;        for(; i<n; i++){            int sum = Integer.parseInt(String.valueOf(rnum1.charAt(i)))+Integer.parseInt(String.valueOf(rnum2.charAt(i)))+up;            up = sum/10;            int re = sum%10;            res = res + re;        }        while(i<n1){            int sum = Integer.parseInt(String.valueOf(rnum1.charAt(i)))+up;            up = sum/10;            int re = sum%10;            res = res + re;            i++;        }        while(i<n2){            int sum = Integer.parseInt(String.valueOf(rnum2.charAt(i)))+up;            up = sum/10;            int re = sum%10;            res = res + re;            i++;        }        //忘记了这个case        //最后可能还有进位        if(up!=0)            res+=up;                    return new StringBuffer(res).reverse().toString();    }}



原创粉丝点击