题目
Given two non-negative integers num1
and num2
represented 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();
}
}