43. Multiply Strings

    xiaoxiao2021-03-25  149

    这是一套实现大数的乘法,把大数的加法也加在里面了,首先来看! 这里十分清楚乘法的数学分析,在这里不多讲解,得到一个int【num1.length()+num2.length()】的数组; 然后进行加法运算,设置一个carrybit(进位数)=数组的数; 最后从第一个不为0的数放入string中。 最后考虑“0”的情况,string等于“0”应该用string.equal(“0”)表示。具体代码如下:

    public static String multiply(String num1, String num2) { if (num1.equals("0")||num2.equals("0")) return "0"; else { int len1=num1.length(); int len2=num2.length(); int[] temp=new int[len1+len2]; for (int i = len1-1; i >=0; i--) { for (int j = len2-1; j >=0; j--) { temp[i+j+1]+=(num1.charAt(i)-'0')*(num2.charAt(j)-'0'); } } int carrybit=0; for (int i = temp.length-1; i >=0; i--) { temp[i]+=carrybit; carrybit=temp[i]/10; temp[i]=temp[i]%10; } int left=0; while (left<temp.length&&temp[left]==0) { left++; } StringBuffer sb=new StringBuffer(); for (; left < temp.length; left++) { sb.append(temp[left]); } return sb.toString(); } }
    转载请注明原文地址: https://ju.6miu.com/read-2759.html

    最新回复(0)