https://leetcode-cn.com/problems/add-strings/
class Solution {public String addStrings(String num1, String num2) {// 只要2个里面还有一个数字,就要继续算,这一点要体现在while里StringBuffer buffer = new StringBuffer("");int i = num1.length() - 1, j = num2.length() - 1;int carry = 0;while (i >= 0 || j >= 0) {int r1 = i >= 0 ? num1.charAt(i) - '0' : 0;int r2 = j >= 0 ? num2.charAt(j) - '0' : 0;// 进位+当前值为当前位的和// %10 为当前位的最终值// /10 为进位值int temp = r1 + r2 + carry;carry = temp / 10;buffer.append(temp % 10);i--;j--;}if (carry == 1) {buffer.append(1);}return buffer.reverse().toString();}}
public String addStrings(String num1, String num2) {// 思路:每一位分别叠加,结果放入字符串,最后倒叙。需要来考虑进位的问题StringBuffer res = new StringBuffer();// 定义遍历 2 个字符串的初始位置int i = num1.length() - 1;int j = num2.length() - 1;// 定义进位变量int carry = 0;// 统一进位情况:只要未遍历完或者还有进位,就补零继续while (i >= 0 || j >= 0 || carry != 0) {// 取两数当前的对应数位,但是取出来可能不是数字,也就是没有数字了,要补零站位// 字符要将 ASCII 码转为数字int n1 = i >= 0 ? num1.charAt(i) - '0' : 0;int n2 = j >= 0 ? num2.charAt(j) - '0' : 0;// 对当前数位求和int sum = n1 + n2 + carry;res.append(sum % 10);carry = sum / 10;// 移动指针,遍历下一位i--;j--;}return res.reverse().toString();}
