import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 计算两个数之和
* @param s string字符串 表示第一个整数
* @param t string字符串 表示第二个整数
* @return string字符串
*/
public String solve (String s, String t) {
// write code here
// 0.处理特殊情况
if (s.length() == 0) {
return t;
}
if (t.length() == 0) {
return s;
}
// 1.按位加,注意进位
StringBuilder sb = new StringBuilder();
int i = 0;
int sl = s.length();
// 字符串s的实际下标,从后往前
int si = sl - 1 - i;
int tl = t.length();
// 字符串t的实际下标,从后往前
int ti = tl - 1 - i;
// 进位
int add = 0;
while (si >= 0 || ti >= 0) {
// si和ti有一个大于等于0即继续运算
int sn = 0;
if (si >= 0) {
sn = s.charAt(si) - '0';
}
int tn = 0;
if (ti >= 0) {
tn = t.charAt(ti) - '0';
}
// 运算
int sum = sn + tn + add;
int res = sum % 10;
add = sum / 10;
// 使用StringBuilder的insert方法进行前插 - sb.insert(0, "前插的内容")
// 使用String的静态方法valueOf进行字符串化(序列化) - String.valueOf(数字)
sb.insert(0, String.valueOf(res));
// 更新si和ti
i++;
si = sl - 1 - i;
ti = tl - 1 - i;
}
// 此时si和ti全小于0,若进位还有值,则将其加到前面
if (add > 0) {
sb.insert(0, String.valueOf(add));
}
return sb.toString();
}
}