字符串 - 使用字符串模拟两数相加
2020-08-11 本文已影响0人
greedycr7
415. 字符串相加
题目描述:
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
提示:
num1 和num2 的长度都小于 5100
num1 和num2 都只包含数字 0-9
num1 和num2 都不包含任何前导零
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式
算法思想:
解法一:双指针解法
分别定义两个指针,指向字符串str1和字符串str2的尾部,然后,相同位上的数字进行算术加法,同时记录每次加法运算的进位。
传送门
代码实现:
解法一:双指针解法
class Solution {
public String addStrings(String num1, String num2) {
int i = num1.length() - 1;
int j = num2.length() - 1;
// carry表示进位
int carry = 0;
// sum表示每位相加的和
int sum;
StringBuilder builder = new StringBuilder();
while (i >= 0 && j >= 0) {
sum = (num1.charAt(i)-'0') + (num2.charAt(j) - '0') + carry;
builder.append(sum % 10);
carry = sum / 10;
i --;
j --;
}
while (i >= 0) {
sum = (num1.charAt(i) - '0') + carry;
builder.append(sum % 10);
carry = sum / 10;
i --;
}
while (j >= 0) {
sum = (num2.charAt(j) - '0') + carry;
builder.append(sum % 10);
carry = sum / 10;
j --;
}
if (carry > 0) {
builder.append(carry);
}
return builder.reverse().toString();
}
}