题目:给定两个由数字组成的字符串,求它们相加的结果。
题解思路:因为相加运算是从后往前进行的,所以可以先翻转字符串,再逐位计算。这种类型的题考察的是细节,如进位、位数差等等。
结合代码去思考思路最好:
class Solution {
public String addStrings(String num1, String num2) {
StringBuilder res=new StringBuilder("");
int i=num1.length()-1,j=num2.length()-1;
int carry=0;
while(i>=0||j>=0){
int n1=i>=0?num1.charAt(i)-'0':0;
int n2=j>=0?num2.charAt(j)-'0':0;//就是判断字符串用完没有,用完了就赋值为0
int tmp=n1+n2+carry;
carry=tmp/10;//取余
res.append(tmp%10);//取商
i--;j--;
}
if(carry==1){
res.append(1);
}//应该是最后的那个1的判断
return res.reverse().toString();
}
}