首页 > 编程语言 > 详细

如果系统要使用超大整数(超过long长度范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算

时间:2014-10-10 18:29:05      阅读:252      评论:0      收藏:0      [点我收藏+]
package interview_10_10;

import org.junit.Test;

public class T1 {

    /**
     * 如果系统要使用超大整数(超过long长度范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算)。
     */
    @Test
    public void test1() {
        String number1 = "4324328732789";
        String number2 = "2383244324324325898";
        String result = doAdd(number1, number2);
        System.out.println(result);

    }

    /**
     * @param num1
     * @param num2
     * @return  返回结果
     * 1.计算小的那个左边需要补几个0
     * 2.从右边开始一个个的开始相加
     */
    public static String doAdd(String num1, String num2) {
        String str = "";
        int lena = num1.length();
        int lenb = num2.length();
        
        int maxlength = lena > lenb ? lena : lenb;
        int minlength = lena < lenb ? lena : lenb;

        String strtemp = "";
        for (int i = (maxlength - minlength); i > 0; i--) { // 计算左边需要补几个0
            strtemp += 0;
        }
        if (maxlength == lena) { // 左边补零
            num2 = strtemp + num2;
        } else {
            num1 = strtemp + num1;
        }
        int jw = 0;
        for (int i = (maxlength - 1); i >= 0; i--) {
            int temp = 0;
            int number1 = Integer.valueOf(String.valueOf(num1.charAt(i)));
            int number2 = Integer.valueOf(String.valueOf(num2.charAt(i)));

            if (number1 + number2 + jw > 10 && i != 0) {
                temp = number1 + number2 + jw - 10;
            } else {
                temp = number1 + number2 + jw;
            }
            str = String.valueOf(temp) + str;
        }
        return str;
    }
}

 

如果系统要使用超大整数(超过long长度范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算

原文:http://www.cnblogs.com/chengshuang/p/4016194.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!