题目描述
题目描述:
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
注意:
num1 和num2 的长度都小于 5100.
num1 和num2 都只包含数字 0-9.
num1 和num2 都不包含任何前导零。
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-strings
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
这道题比较简单,我们可以直接模拟两个大数字的加法,满十进一,不足位补0。例如123+27=150:
1 2 3
+ 0 2 7
------1--
1 5 0
由于结果是需要动态添加字符,而且次数可能会很多,所以要使用StringBuffer的append方法,比直接s1+=s2这种方法效率要高很多。
同时因为append方法是往后加入的,因此当我们得到的最终结果是反转的,还需要使用reverse方法,进行一次反转,这样才会得到正确的答案 .
代码
//code
public String addStrings(String num1, String num2) {
int i = num1.length() - 1;
int j = num2.length() - 1;
int addNum = 0;
StringBuffer result= new StringBuffer();
while (i >= 0 || j >= 0 || add != 0) {
int x = i >= 0 ? num1.charAt(i) - '0' : 0;
int y = j >= 0 ? num2.charAt(j) - '0' : 0;
int temp= x + y + addNum ;
result.append(temp% 10);
result= temp/ 10;
i--;
j--;
}
// 计算完以后的答案需要翻转过来
result.reverse();
return result.toString();
}