计 算 两 个 长 整 数 的 减 法 , 每 个 长 整 数 用 一 个 整 数 数 字 来 保 存 : 比 如 计 算 16789 - 123 = 6666. 则 A=[6,7,8,9],B=[1,2,3],返 回:[6,6,6,6]
public static int[] function(int[] array1, int[] array2) {
if ((array1.length == 0) || (array2.length == 0)) {
return null;
}
int len1 = array1.length - 1;
int len2 = array2.length - 1;
int lenRes = len1 > len2 ? len1 : len2;
int[] res = new int[lenRes + 1];
int jie = 0;
int j = len2;
for (int i = lenRes; i >= 0; i--) {
if (j >= 0) {
if (array1[i] - array2[j] - jie >= 0) {
res[i] = array1[i] - array2[j--] - jie;
jie = 0;
} else {
res[i] = array1[i] + 10 - array2[j--] - jie;
jie = 1;
}
} else {
res[i] = array1[i] - jie;
jie = 0;
}
}
return res;
}
public static void main(String[] args) {
int[] a = { 1, 0, 8, 3 };
int[] b = { 9, 9, 9 };
// int[] res = function(a, b);
// for (int i : res) {
// System.out.print(i);
// }
System.out.println();
System.out.println("--------------------");
int res2 = arrayToNumber(b) - arrayToNumber(a);
System.out.println(res2);
for (int i : numberToArray(res2)) {
System.out.print(i);
}
}
public static int arrayToNumber(int[] array) {
int len = array.length - 1;
int res = 0;
for (int i = len; i >= 0; i--) {
res = (int) (array[i] * Math.pow(10, len - i)) + res;
}
return res;
}
public static int[] numberToArray(int number) {
String a = number + "";
int len = a.length();
int[] res = new int[len];
for (int i = len - 1; i >= 0; i--) {
res[i] = number % 10;
number /= 10;
}
return res;
}