zoukankan      html  css  js  c++  java
  • 43. Multiply Strings (JAVA)

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

    Example 1:

    Input: num1 = "2", num2 = "3"
    Output: "6"

    Example 2:

    Input: num1 = "123", num2 = "456"
    Output: "56088"
    

    Note:

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

    需要考虑乘积的长度,以及乘积的每一位对应的是乘数中哪两个数字的乘积。

    注意字符串首位出现0的情况,通常情况下至多首位为0,除了一个特殊情况乘数中有0,这样会造成String中多位为0,所以在开头要排除这个可能。

    注意JAVA比较字符串相等必须用equals而不能用==;字符转换成int,除了-'0',还需要强制转换(char);char转成String,也要显示转换,使用String.valueOf

    class Solution {
        public String multiply(String num1, String num2) {
            if(num1.equals("0")|| num2.equals("0")) return "0";
            
            int[] product = new int[num1.length()+num2.length()]; //array to save the product
            int m1;
            int m2;
            int p;
            
            for(int i = product.length-1; i >= 0; i--){ //iterate each bit of the product
                for(int j = num2.length()-1; j>=0; j--){ //iterate each bit of multiplier2
                    if(i-j-1 < 0) continue;
                    if(i-j-1 >= num1.length()) break;
                    m2 = num2.charAt(j)-'0';
                    m1 = num1.charAt(i-j-1)-'0';
                    p = m1*m2;
                    product[i] += p;
                }
            }
            
            //calculate carry
            for(int i = product.length-1; i > 0; i--){
                if(product[i]<10) continue;
                
                product[i-1] += (product[i]/10);
                product[i] %= 10;
            }
            
            //transfrom integer to string
            String result;
            if(product[0] != 0) {
                result = String.valueOf((char) (product[0] + '0'));
            }
            else result = "";
            for(int i = 1; i < product.length; i++){
                result += String.valueOf((char) (product[i] + '0'));
            }
            
            return result;
        }
    }
  • 相关阅读:
    团队项目-第一阶段冲刺7
    团队项目-第一阶段冲刺6
    Spring Boot 揭秘与实战(七) 实用技术篇
    Spring Boot 揭秘与实战(七) 实用技术篇
    Spring Boot 揭秘与实战(六) 消息队列篇
    Spring Boot 揭秘与实战(五) 服务器篇
    Spring Boot 揭秘与实战(五) 服务器篇
    Spring Boot 揭秘与实战(五) 服务器篇
    Spring Boot 揭秘与实战(五) 服务器篇
    Spring Boot 揭秘与实战(四) 配置文件篇
  • 原文地址:https://www.cnblogs.com/qionglouyuyu/p/10818796.html
Copyright © 2011-2022 走看看