逆序,从低位相加
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 计算两个数之和
* @param s string字符串 表示第一个整数
* @param t string字符串 表示第二个整数
* @return string字符串
*/
public String solve (String s, String t) {
// write code here
int length1 = s.length();
int lenght2 = t.length();
//特殊值处理
if(length1 == 0){
return t;
}
if(lenght2 == 0){
return s;
}
int len = lenght2 - length1;
int maxLen = lenght2;
StringBuilder temp = new StringBuilder();
//两个字符串长度不一致时,将较短的字符串用0在前面补齐
if(len>0){//第2个字符串长
for(int i=0;i<len;i++){
temp.append("0");
}
s = temp + s;
maxLen = lenght2;
}else if(len<0){//第1个字符串长
len = (-1)*len;
for(int i=0;i<len;i++){
temp.append("0");
}
t = temp + s;
maxLen = length1;
}
//字符串相加:将两个字符串的每一位字符相加,如果相加大于9,则进位(使用second保存十进制位,first保存个位)。
StringBuilder str = new StringBuilder();
int second = 0;//十进制位
int first = 0;//个位
int num = 0;//中间变量,保存两个字符以及second相加的结果
int x = 0;
int y = 0;
for(int i = maxLen-1;i>=0;i--){
x = Integer.parseInt(s.charAt(i)+"");
y = Integer.parseInt(t.charAt(i)+"");
num = x + y + second;//使用十进制位
second = 0;//使用十进制位后,十进制位置0
if(num>9){//两个字符以及second相加大于或者等于10
second = 1;//更新十进制位
first = num-10;//更新个位
str.append(first);//将字符相加结果添加到StringBuilder对象中
}else{//两个字符以及second相加小于10
str.append(num);//将字符相加结果添加到StringBuilder对象中
}
}
//两个字符串的首位字符相加结果如果有进位,则添加字符“1”
if(second==1){
str.append("1");
}
return str.reverse().toString();//字符串翻转
}
}