按位依次相乘,相加再进位

  1. class Solution {
  2. public String multiply(String num1, String num2) {
  3. if(num1.equals("0") || num2.equals("0")){
  4. return "0";
  5. }
  6. int m = num1.length();
  7. int n = num2.length();
  8. int[] mn = new int[m+n];
  9. for(int i = m-1;i >= 0;i--){
  10. int x = num1.charAt(i) - '0';
  11. for(int j = n-1;j >= 0;j--){
  12. int y = num2.charAt(j) - '0';
  13. mn[i+j+1] += x * y;
  14. }
  15. }
  16. for(int i = m + n - 1;i > 0;i--){
  17. mn[i-1] += mn[i]/10;
  18. mn[i] = mn[i] % 10;
  19. }
  20. StringBuffer result = new StringBuffer();
  21. int index = mn[0] == 0 ? 1:0;
  22. while(index < m+n){
  23. result.append(mn[index]);
  24. index++;
  25. }
  26. return result.toString();
  27. }
  28. }