首页 > 代码库 > 如果系统要使用超大整数(超过long长度范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算
如果系统要使用超大整数(超过long长度范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算
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长度范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。