模拟加法
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)); } } }
阅读更多
相关文章推荐
- 利用位图方法求字符串的组合(类似于位运算模拟加法)
- hdu 1002 A + B Problem II(大数模拟加法)
- POJ 2562 Primary Arithmetic(我的水题之路——模拟加法进位)
- uva 10523 Very Easy !!! 大数模拟加法和乘法
- hdoj 1230 火星A+B(模拟加法进位运算)
- LeetCode Add Two Numbers(用链表模拟加法)
- hdu 1002 A + B Problem II(大数模拟加法)
- 关于模拟大数溢出的解决方案————加法篇
- <数据结构学习与实验指导>3-3银行业务队列模拟/3-4一元多项式的乘法与加法运算
- HDU 1753 大明A+B(大数加法,数组模拟)
- POJ 2602 Superlong sums(模拟大数加法)
- String——add_binary(字符串模拟加法)和multiply-strings(字符串模拟乘法)
- 字符串上模拟加法
- Java模拟两个大整数的加法、乘法、除法
- 用数组模拟大数加法模板
- 位运算模拟二进制加法--位图方法
- 天梯模拟赛 L1 - 03 宇宙无敌加法器 【模拟加法】
- 整数大数模拟 高精度加法 高精度减法 高精度乘法 高精度除法 c/c++ java
- 用模拟加法打印1到n最大的n位数
- 【LeetCode】415. Add Strings,用string模拟加法