题目描述
题目难度:Easy
Given two non-negative integers num1 and num2 represented as string, return the sum of num1 and num2.
Note:
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.
AC代码
class Solution {
public String addStrings(String num1, String num2) {
if(num1 == null || num2 == null) return null;
if(num1.equals("0")) return num2;
if(num2.equals("0")) return num1;
StringBuilder sb = new StringBuilder();
int carry = 0, num = 0;
for(int i = num1.length() - 1, j = num2.length() - 1;i >= 0 || j >= 0;i--, j--){
if(i >= 0 && j >= 0){
num = num1.charAt(i) - '0' + num2.charAt(j) - '0' + carry;
}
else if(i >= 0) num = num1.charAt(i) - '0' + carry;
else num = num2.charAt(j) - '0' + carry;
carry = num / 10;
sb.append(num % 10);
}
if(carry != 0) sb.append(carry);
return sb.reverse().toString();
}
}
下面这个代码更舒服
参考自:https://www.cnblogs.com/linkstar/p/5998891.html
public class Solution {
public String addStrings(String num1, String num2) {
StringBuilder sb = new StringBuilder();
int carry = 0;
for(int i = num1.length() - 1, j = num2.length() - 1; i >= 0 || j >= 0; i--, j--){
int x = i < 0 ? 0 : num1.charAt(i) - '0';
int y = j < 0 ? 0 : num2.charAt(j) - '0';
sb.append((x + y + carry) % 10);
carry = (x + y + carry) / 10;
}
if(carry != 0)
sb.append(carry);
return sb.reverse().toString();
}
}