【题目描述】
给定两个字符串形式的非负整数 num1
和num2
,计算它们的和并同样以字符串形式返回。
你不能使用任何內建的用于处理大整数的库(比如 BigInteger
), 也不能直接将输入的字符串转换为整数形式。
https://leetcode.cn/problems/add-strings/description/
【示例】
【代码】LeeCode
package com.company;
// 2023-03-06
import java.util.*;
class Solution {
public String addStrings(String num1, String num2) {
int m = num1.length() - 1;
int n = num2.length() - 1;
StringBuilder sb = new StringBuilder();
// 记录中间大于10以后的十位数
int sum = 0;
// 定义2个个指针m和n, 指向最低位
while (m >= 0 || n >= 0 || sum != 0){
// '2' - '0' --> 返回int类型
// 如果位数不同, 则需要补0
int x = m >= 0 ? num1.charAt(m) - '0' : 0;
int y = n >= 0 ? num2.charAt(n) - '0' : 0;
// 求和
int res = x + y + sum;
// 取余就是单个字符
sb.append(res % 10);
// 此时记录大于0的值
sum = res / 10;
m--;
n--;
}
sb.reverse();
return sb.toString();
}
}
public class Test {
public static void main(String[] args) {
new Solution().addStrings("2", "3"); // 输出: 5
new Solution().addStrings("123", "456"); // 输出: 569
}
}