码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode Multiply Strings

时间:2015-09-22 13:00:11      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:

Given two numbers represented as strings, return multiplication of the numbers as a string.

Note: The numbers can be arbitrarily large and are non-negative.


解题思路:

没想出来,看的答案。

The key to solve this problem is multiplying each digit of the numbers at the corresponding positions and get the sum values at each position. That is how we do multiplication manually.


Java code:

public String multiply(String num1, String num2) {
        String n1 = new StringBuilder(num1).reverse().toString();
        String n2 = new StringBuilder(num2).reverse().toString();
        int[] d = new int[num1.length() + num2.length()];    
        
        //multiply each digit and sum at the corresponding positions
        for(int i=0; i < n1.length(); i++){
            for(int j=0; j < n2.length(); j++){
                d[i+j] += (n1.charAt(i) - ‘0‘) *(n2.charAt(j) - ‘0‘);
            }
        }
        
        StringBuilder sb = new StringBuilder();
        
        //calculate each digit
        for(int i=0; i< d.length; i++){
            int mod = d[i]%10;
            int carry = d[i]/10;
            if(i+1 < d.length){
                d[i+1] += carry;
            }
            sb.insert(0, mod);
        }
        
        //remove front 0‘s
        while(sb.charAt(0) == ‘0‘ && sb.length() >1) {
            sb.deleteCharAt(0);
        }
        return sb.toString();
    }

Reference:

1. http://www.programcreek.com/2014/05/leetcode-multiply-strings-java/

 

Leetcode Multiply Strings

标签:

原文地址:http://www.cnblogs.com/anne-vista/p/4828584.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!