Big Integer Addition

xiaoxiao2021-02-28  126

题目描述:

Given two non-negative integers num1 and num2 represented as string, return the sum ofnum1 and num2.

注意事项

The length of both num1 and num2 is < 5100.Both num1 and num2 contains only digits 0-9.Both num1 and num2 does not contain any leading zero.You must not use any built-in BigInteger library or convert the inputs to integer directly.

样例

Given num1 = "123", num2 = "45" return "168"

分析:

老生常谈的加法题 //虽然总是记不住做法== 不能调用API中已有的Integer包里的方法,所以要利用的是ALU加法器的原理:

代码:

public String addStrings(String num1, String num2) { // 利用的是ALU加法器的原理 if(num1.equals("0")){ return num2; } if(num2.equals("0")){ return num1; } int len1 = num1.length(); int len2 = num2.length(); int len = Math.max(len1,len2); char[] result = new char[len+1]; //建立一个char数组来保存结果,多一位为进位 for(int k=0;k<len+1;k++){ result[k] = '0'; } int p=0, X=0, Y=0; for(int i=0; i<len+1;i++){ if(i<len1){ X = num1.charAt(len1-i-1)-'0'; }else{ X = 0; } if(i<len2){ Y = num2.charAt(len2-1-i)-'0'; }else{ Y = 0; } int temp = X + Y + p; // p是下一位的进位 result[len-i] = (char) (temp % 10 + '0'); //本位和 p = temp/10; //求进位 } int count = 0; for(;count<len+1;count++){ if(result[count]!='0'){ break; } } String res = ""; for(int i =count;i<len+1;i++){ res += result[i]; } return res; }

转载请注明原文地址: https://www.6miu.com/read-26021.html

最新回复(0)