题解 | #大数加法#
大数加法
https://www.nowcoder.com/practice/11ae12e8c6fe48f883cad618c2e81475
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 计算两个数之和
* @param s string字符串 表示第一个整数
* @param t string字符串 表示第二个整数
* @return string字符串
*/
public String solve (String s, String t) {
if (s.equals("")) {
return t;
}
if (t.equals("")) {
return s;
}
char[] charS = s.toCharArray();
char[] charT = t.toCharArray();
int sLen = s.length();
int tLen = t.length();
int len = Math.min(sLen, tLen);
StringBuilder sb = new StringBuilder();
boolean flag = false; //是否进位
for (int i = 1; i <= len; i++) {
int tempS = charS[sLen - i] - '0';
int tempT = charT[tLen - i] - '0';
int temp;
if (flag) {
temp = tempS + tempT + 1;
} else {
temp = tempS + tempT;
}
if (temp >= 10) {
flag = true;
} else {
flag = false;
}
sb.append(temp % 10);
}
if (sLen > len) {
for (int i = sLen - len - 1; i >= 0; i--) {
int temp;
if (flag) {
temp = (charS[i] - '0') + 1;
} else {
temp = (charS[i] - '0');
}
if (temp >= 10) {
flag = true;
} else {
flag = false;
}
sb.append(temp % 10);
}
}
if (tLen > len) {
for (int i = tLen - len - 1; i >= 0; i--) {
int temp;
if (flag) {
temp = (charT[i] - '0') + 1;
} else {
temp = (charT[i] - '0');
}
if (temp >= 10) {
flag = true;
} else {
flag = false;
}
sb.append(temp % 10);
}
}
if (flag) {
sb.append("1");
}
return sb.reverse().toString();
}
}
#在找工作求抱抱#
联想公司福利 1548人发布