43. Multiply Strings

Given two non-negative integersnum1andnum2represented as strings, return the product ofnum1andnum2.

Note:

  1. The length of bothnum1andnum2is < 110.
  2. Bothnum1andnum2contains only digits0-9.
  3. Bothnum1andnum2does not contain any leading zero.
  4. You must not use any built-in Big Integer library or convert the inputs to integer directly.

思路:借鉴一下https://discuss.leetcode.com/topic/30508/easiest-java-solution-with-graph-explanation/2

public class Solution {
    public String multiply(String num1, String num2) {
        int m = num1.length(), n = num2.length();
        int[] pos = new int[m + n];

        for(int i = m - 1; i >= 0; i--) {
            for(int j = n - 1; j >= 0; j--) {
                int mul = (num1.charAt(i) - '0') * (num2.charAt(j) - '0'); 
                int p1 = i + j, p2 = i + j + 1;
                int sum = mul + pos[p2];

                pos[p1] += sum / 10;
                pos[p2] = (sum) % 10;
            }
        }  

        StringBuilder sb = new StringBuilder();
        for(int p : pos) if(!(sb.length() == 0 && p == 0)) sb.append(p);
        return sb.length() == 0 ? "0" : sb.toString();
    }
}

results matching ""

    No results matching ""