题目思路:
题目是给予两个以字符串为形式的非负整数,然后让我们输出两个数的和的字符串形式。第一想法就是通过对字符串的每一个字母进行操作,来模仿加法操作。
程序解说:
sb变量是用来存储两个非负整数的和的,i和j分别用来操作num1和num2的伪指针。val是用来存放num1和num2相应计数位的和的。carryBit是用来存放每次num1和num2相应计数相加之后的进位。
public class Solution {
public String addStrings(String num1, String num2) {
StringBuilder sb = new StringBuilder();
int i = num1.length();
int j = num2.length();
int carryBit = 0;
while(i-- > 0 | j-- > 0) {
int val = 0;
if(i >=0 && j >=0) {
val = (num1.charAt(i) - '0') + (num2.charAt(j) - '0') + carryBit;
}else if(i >= 0) {
val = (num1.charAt(i) - '0') + carryBit;
}else {
val = (num2.charAt(j) - '0') + carryBit;
}
carryBit = val / 10;
val = val % 10;
sb.append(val + "");
}
if(carryBit != 0)
sb.append(carryBit);
return sb.reverse().toString();
}
}