1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
class Solution { public String multiply(String num1, String num2) { char[] nums1=num1.toCharArray(); char[] nums2=num2.toCharArray(); int n=num1.length(),m=num2.length(),i,j,k; //一般来说两个数相乘,其最大位数也不会大于啷个位数之和 StringBuilder sb=new StringBuilder(n+m); int[] result =new int [n+m]; //转为数字 for( i=0;i<n;i++) { nums1[i]-='0'; } for( j=0;j<m;j++) { nums2[j]-='0'; } for( i=0;i<m;i++) { int carry=0; for( j=0;j<n;j++) { //用nums2的每一位去乘nums1 累加到result result[i+j]+=nums1[n-1-j]*nums2[m-1-i]+carry; carry=result[i+j]/10; result[i+j]%=10; } k=i+j; //进位处理 while(carry!=0) { result[k]+=carry; carry=result[k]/10; result[k]%=10; k++; } } i=n+m-1; while(i>0 && result[i]==0) i--; while(i>=0) sb.append(result[i--]); return sb.toString(); } }
|
近期评论