给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
提示:
num1 和num2 的长度都小于 5100
num1 和num2 都只包含数字 0-9
num1 和num2 都不包含任何前导零
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-strings
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
用数组操作加减法,注意进位。
public String addStrings(String num1, String num2) { if (num1 == null) { return num2; } if (num2 == null) { return num1; } int l1 = num1.length(); int l2 = num2.length(); StringBuilder str; if (l1 > l2) { l2 = l1; l1 = num2.length(); str = new StringBuilder(num1); num1 = num2; num2 = str.toString(); } num1 = new StringBuilder(num1).reverse().toString(); num2 = new StringBuilder(num2).reverse().toString(); str = new StringBuilder(); int k = 0; for (int i = 0; i < l1; i++) { int c1 = num1.charAt(i) - 48; int c2 = num2.charAt(i) - 48; int c = c1 + c2 + k; if (c > 9) { k = 1; c = c - 10; } else { k = 0; } str.append(c); } for (int i = l1; i < l2; i++) { int c2 = num2.charAt(i) - 48; int c = c2 + k; if (c > 9) { k = 1; c = c - 10; str.append(c); } else { str.append(c); k = 0; if (i + 1 < l2) { str.append(num2.substring(i + 1)); break; } } } if (k == 1) { str.append('1'); } return str.reverse().toString(); }