43. 字符串相乘

  1. class Solution {
  2. public String multiply(String num1, String num2) {
  3. StringBuilder ans = new StringBuilder();
  4. int[] arr1 = new int[num1.length()];
  5. int[] arr2 = new int[num2.length()];
  6. int[] target = new int[num1.length() + num2.length()];
  7. convertToArray(arr1, num1);
  8. convertToArray(arr2, num2);
  9. for (int i = 0; i < num1.length(); i++) {
  10. for (int j = 0; j < num2.length(); j++) {
  11. int k = i + j;
  12. target[k] += arr1[i] * arr2[j];
  13. while (target[k] > 9) {
  14. target[k + 1] += target[k] / 10;
  15. target[k] %= 10;
  16. k++;
  17. }
  18. }
  19. }
  20. int high = num1.length() + num2.length() - 1;
  21. while (target[high] == 0 && high > 0)
  22. high--;
  23. for (int i = high; i >=0; i--)
  24. ans.append((char)(target[i] + '0'));
  25. return ans.toString();
  26. }
  27. private void convertToArray(int[] arr, String num) {
  28. // "123"===> [3, 2, 1]
  29. int len = num.length();
  30. for (int i = 0; i < num.length(); i++)
  31. arr[i] = num.charAt(len - 1 - i) - '0';
  32. }
  33. }