题目
思路
直接模拟加法即可,注意进位
答案
import java.util.*;
public class Solution {
public String solve (String s, String t) {
if (s == null || s.equals("")) return t;
if (t == null || t.equals("")) return s;
int L = s.length() - 1, R = t.length() - 1;
LinkedList<Integer> list = new LinkedList<>();
boolean jinwei = false;
while (L >= 0 && R >= 0) {
char c1 = s.charAt(L);
char c2 = t.charAt(R);
int n1 = Integer.valueOf(c1 + "");
int n2 = Integer.valueOf(c2 + "");
int sum = n1 + n2;
if (jinwei) sum += 1;
if (sum >= 10) {
list.addFirst(sum % 10);
jinwei = true;
} else {
list.addFirst(sum);
jinwei = false;
}
L--;
R--;
}
while (L >= 0) {
char c1 = s.charAt(L);
int n1 = Integer.valueOf(c1 + "");
int sum = n1;
if (jinwei) sum += 1;
if (sum >= 10) {
list.addFirst(sum % 10);
jinwei = true;
} else {
list.addFirst(sum);
jinwei = false;
}
L--;
}
while (R >= 0) {
char c2 = t.charAt(R);
int n2 = Integer.valueOf(c2 + "");
int sum = n2;
if (jinwei) sum += 1;
if (sum >= 10) {
list.addFirst(sum % 10);
jinwei = true;
} else {
list.addFirst(sum);
jinwei = false;
}
R--;
}
if (jinwei) list.addFirst(1);
StringBuilder sb = new StringBuilder();
for (Integer v : list) {
sb.append(v + "");
}
return sb.toString();
}
}