一. 简单代码实现
- 面试遇到的面试题(总结)
- 代码实现
public static void main(String[] args) {
String num1 = "12";
String num2 = "3";
int i = Integer.parseInt(num1);
int i1 = Integer.parseInt(num2);
int i2 = i+i1;
System.out.println(i2);
System.out.println(sum(num1, num2));
}
private static String sum(String num1, String num2) {
//将参数存入集合
List<String> strings = new ArrayList<>();
strings.add(num1);
strings.add(num2);
String max = "";
String min = "";
//判断大小值
if (num1.length() > num2.length()) {
max = num1;
min = num2;
} else {
max = strings.stream().max(Comparator.comparing(o -> o)).get();
min = strings.stream().min(Comparator.comparing(o -> o)).get();
}
StringBuffer stringBuffer = new StringBuffer();
//String转换数组结构
char[] max1 = max.toCharArray();
char[] min1 = min.toCharArray();
//长度相减,判断从第几位结束相加
int length = (max1.length - min1.length);
//相加后大于十的十位数
int dy = 0;
//相加后末尾数
int xj = 0;
//最大值开始遍历
for (int i = max1.length - 1; i >= 0; i--) {
xj = Integer.parseInt(max1[i] + "") + dy;
//判断下标小于差值的不判断
if (i < length) {
stringBuffer.append(xj);
break;
}
//最小值开始判断
for (int j = min1.length - 1; j >= i - length; j--) {
xj = Integer.parseInt(max1[i] + "") + Integer.parseInt(min1[j] + "") + dy;
//两个数相加大于10
if (xj >= 10) {
String i2 = String.valueOf(xj);
//取十位数
dy = Integer.parseInt(i2.substring(0, 1));
//取个位数
xj = Integer.parseInt(i2.substring(1, 2));
//如果数值相同直接累加
if (max1.length == min1.length && j == 0) {
xj = Integer.parseInt(xj + "" + dy);
}
}
}
stringBuffer.append(xj);
}
return stringBuffer.reverse().toString();
}
希望帮助到有需要的人!!!