您的位置:首页 > 其它

模拟加法

2018-04-12 19:56 381 查看
模拟加法
public class PlusString {

public static String plusString(String numsStr1, String numsStr2) {
if (numsStr1 == null || numsStr2 == null) {
System.err.println("invalid_input,check...");
}

char[] nums1 = numsStr1.toCharArray();
char[] nums2 = numsStr2.toCharArray();

int len1 = nums1.length;
int len2 = nums2.length;

int newlen = Math.max(len1, len2);
char[] newNums1 = new char[newlen];
char[] newNums2 = new char[newlen];
// 对齐位
if (len1 > len2) {
int t = len1-1;
newNums1 = nums1;
for (int i = len2 - 1; i >= 0; i--) {
newNums2[t--] = nums2[i];
}
for (int i = t; i >= 0; i--) {
newNums2[i] = '0';
}
} else if (len1 < len2) {
newNums2 = nums2;
for (int i = len1 - 1; i >= 0; i--) {
newNums1[i] = nums1[i];
}
for (int i = len2 - 1; i >= len1; i--) {
newNums1[i] = '0';
}
}
plusplusBigData(newNums1, newNums2, newlen);

return "";
}

public static void plusplusBigData(char[] nums1, char[] nums2, int newlen) {
// 相同长度做加法运算
int jinWei = 0;
List<Integer> list = new ArrayList<>();
for (int i = newlen - 1; i >= 0; i--) {
int num = (nums1[i] - '0') + (nums2[i] - '0') + jinWei;
if (num >= 10) {
if (i == 0) {
jinWei = 1;
} else {
jinWei = 1;
num %= 10;
}
list.add(num);
} else {
jinWei = 0;
list.add(num);
}
}

for (int i = list.size() - 1; i >= 0; i--) {
System.out.print(list.get(i));
}
}
}

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: