龙空技术网

算法之两个大数相加

无涯子Z 276

前言:

现时姐妹们对“大数相加算法伪代码”都比较珍视,兄弟们都需要剖析一些“大数相加算法伪代码”的相关内容。那么小编在网上汇集了一些关于“大数相加算法伪代码””的相关文章,希望朋友们能喜欢,我们一起来学习一下吧!

两个大数相加

思路:

* 1. 对相加的字符串进行反转。

* 2. 比较位数,位数少的进行补0;

* 3. 逐个相加

* 4. 处理溢出

代码如下:

@Testpublic void t2() { String n1 = "12345600"; String n2 = "12545"; System.out.println(TwoBignumSum(n1, n2));}/** * * @param n1 * @param n2 * @return */private String TwoBignumSum(String n1, String n2) { //反转字符串 StringBuffer sb1 = new StringBuffer(n1); StringBuffer sb2 = new StringBuffer(n2); String n11 = sb1.reverse().toString(); String n22 = sb2.reverse().toString(); boolean overFlow = false;  //比较位数,位数少的进行补0; int len_n11 = n11.length(); int len_n22 = n22.length(); int max = len_n11 > len_n22 ? len_n11 : len_n22; int[] result = new int[max + 1]; if(len_n11 > len_n22) { for(int i = len_n22; i < len_n11; i++) { n22 += "0"; } } else { for(int j = len_n11; j < len_n22; j++) { n11 += "0"; } } //逐个相加 for(int m = 0; m < max; m++) { int temp = Integer.parseInt(n11.charAt(m) + "") + Integer.parseInt(n22.charAt(m) + ""); if(overFlow) { result[m] = temp + 1; } else { result[m] = temp; } //处理溢出 overFlow = overFlow(result, m); } //处理最高位 if(overFlow) { result[max] = 1; } else { result[max] = 0; } //转换为字符串 String sr = ""; for(int n = 0; n < max; n++) { sr += String.valueOf(result[n]); } return new StringBuffer(sr).reverse().toString();}//处理溢出private boolean overFlow(int[] sums, int k) { boolean b = false; if(sums[k] > 10) { sums[k] = sums[k] - 10; b = true; } return b;}

标签: #大数相加算法伪代码