两个大数相加
2020-12-02 本文已影响0人
小胡子哥灬
public class LeetCode {
/**
* 给定两个字符串数字(超出long的范围),算出两数相加的和。
* 思路:
* 1. 先比较两字符串的长度,小的在前面补0,
* 2. char与int的互换 char c = i + '0', int i = c - '0'
*/
public String towBigNumberAdd(String v1, String v2) {
public String twoBigNumAdd (String v1, String v2){
int len1 = v1.length();
int len2 = v2.length();
// 补齐v2的前面为 '0';
String temp = "0";
if (len1 > len2) {
for (int i = 0; i < len1 - len2 - 1; i++) {
temp += "0";
}
v2 = temp + v2;
} else if (len1 < len2) {
for (int i = 0; i < len2 - len1 - 1; i++) {
temp += "0";
}
v1 = temp + v1;
}
int carray = 0;
char[] array = new char[v1.length() + 1];
for (int i = v1.length() - 1; i >= 0; i--) {
int n1 = v1.charAt(i) - '0';
int n2 = v2.charAt(i) - '0';
int sum = n1 + n2 + carray;
array[i + 1] = (char) (sum % 10 + '0');
carray = (sum) / 10;
}
if (carray != 0) {
array[0] = (char) (carray + '0');
return new String(array);
} else {
return new String(array, 1, array.length - 1);
}
}
}
}