大数相乘, 按位算结果, 注意全0,注意进位
1 public class Solution { 2 public String multiply(String num1, String num2) { 3 // IMPORTANT: Please reset any member data you declared, as 4 // the same Solution instance will be reused for each test case. 5 int length1 = num1.length(); 6 int length2 = num2.length(); 7 int[] result = new int[length1 + length2 + 1]; 8 int resultlength = length1 + length2 + 1; 9 for(int i = 0; i < length1; i++) 10 { 11 int carry = 0; 12 int offset = resultlength - 1 - i; 13 for(int j = 0; j < length2; j++) 14 { 15 int tmp1 = num1.charAt(length1 - 1 - i) - '0'; 16 int tmp2 = num2.charAt(length2 - 1 - j) - '0'; 17 int tmpresult = tmp1 * tmp2 + carry + result[offset - j]; 18 result[offset - j] = tmpresult % 10; 19 carry = tmpresult / 10; 20 } 21 if(carry > 0) 22 { 23 int tmp = result[offset - length2] + carry; 24 result[offset - length2] = tmp % 10; 25 result[offset - length2 - 1] = tmp / 10; 26 } 27 } 28 29 StringBuilder myresult = new StringBuilder(); 30 int i = 0; 31 while(i < resultlength && result[i] == 0) 32 i++; 33 if(i >= resultlength) 34 return "0"; 35 while(i < resultlength) 36 { 37 myresult.append(String.valueOf(result[i])); 38 i++; 39 } 40 return myresult.toString(); 41 } 42 }