Leetcode原题
思路
定义一个Stringbuilder字符存储对象
设定 i,j 两指针分别指向 num1,num2 尾部,模拟人工加法;
计算 carry = tmp // 10,代表当前位相加是否产生进位;
计算 tmp = n1 + n2 + carry,并将当前位 tmp % 10 添加至 sb头部;
当指针 i或j 走过数字首部后,给 n1,n2 赋值为 00,相当于给 num1,num2 中长度较短的数字前面填 0,以便后续计算。
最近将得到的字符反转输出
方法 双指针
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 || carry ==1; 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; } return sb.reverse().toString(); }
有兴趣的老爷,还可以关注我的公众号【一起收破烂】,回复【006】获取 最新java面试资料以及简历模型120套哦~