43. Multiply Strings

Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and num2.

Note:

  1. The length of both num1 and num2 is < 110.
  2. Both num1 and num2 contains only digits 0-9.
  3. Both num1 and num2 does not contain any leading zero.
  4. You must not use any built-in BigInteger library or convert the inputs to integer directly

此题考查数学和数组的结合,直接上代码:

public class Solution {

    public String multiply(String num1, String num2) {

        int m = num1.length();

        int 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 p1 = i+j;

                int p2 = i+j+1;

                int mul = (num1.charAt(i)-'0')*(num2.charAt(j)-'0');

                int sum = pos[p2]+mul;

                pos[p2]= sum%10;

                pos[p1] = sum/10+pos[p1];

            }

        }

        StringBuilder sb = new StringBuilder();

        for(int i:pos){

            if(!(i==0&&sb.length()==0)){

                sb.append(i);

            }

        }

        return sb.length()==0?"0":sb.toString();

    }

}

posted @ 2017-01-30 10:26  CodesKiller  阅读(110)  评论(0编辑  收藏  举报