牛客题目链接
1. 题目考点
- StringBuilder 在字符串处理中的使用
- 字符串加法的升级,大数加法
2. 考点解析
- 一次就过,很激动
ArrayList<String> res = new ArrayList<>();
public String solve (String s, String t) {
int j = 0;
for (int i = s.length() - 1; i >= 0; i--) {
f1(t, s.charAt(i) - '0', j++);
}
String str = sum();
return str;
}
public void f1(String a, int b, int num) {
StringBuilder sb = new StringBuilder();
int sum = 0, p = 0;
for (int i = a.length() - 1; i >= 0; i--) {
sum = (a.charAt(i) - '0') * b + p;
sb.append(sum % 10);
p = sum / 10;
}
if (p != 0) sb.append(p);
sb.reverse();
while (num-- != 0) sb.append(0);
res.add(sb.toString());
}
public String sum() {
String s = "";
for (int i = 0; i < res.size(); i++)
s = add(s, res.get(i));
return s;
}
public String add(String s1, String s2) {
StringBuilder sb = new StringBuilder();
int sum = 0, p = 0;
int i = s1.length() - 1;
int j = s2.length() - 1;
while (i != -1 && j != -1) {
sum = (s1.charAt(i--) - '0') + (s2.charAt(j--) - '0') + p;
sb.append(sum % 10);
p = sum / 10;
}
while (i != -1) {
sum = (s1.charAt(i--) - '0') + p;
sb.append(sum % 10);
p = sum / 10;
}
while (j != -1) {
sum = (s2.charAt(j--) - '0') + p;
sb.append(sum % 10);
p = sum / 10;
}
if (p != 0) sb.append(p);
return sb.reverse().toString();
}