zoukankan      html  css  js  c++  java
  • Java for LeetCode 043 Multiply Strings

    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.

    解题思路一:

    BigInteger!!! JAVA实现如下:

    import java.math.BigInteger;
    
    public class Solution {
    	static public String multiply(String num1, String num2) {
    	       BigInteger bi1=BigInteger.valueOf(0);
    	       for(int i=0;i<num1.length();i++){
    	           bi1=bi1.multiply(BigInteger.valueOf(10));
    	           bi1=bi1.add(BigInteger.valueOf(num1.charAt(i)-'0'));
    	       }
    	       BigInteger bi2=BigInteger.valueOf(0);
    	       for(int i=0;i<num2.length();i++){
    	           bi2=bi2.multiply(BigInteger.valueOf(10));
    	           bi2=bi2.add(BigInteger.valueOf(num2.charAt(i)-'0'));
    	       }
    	       return bi1.multiply(bi2).toString();
    	   }
    }
    

    360 ms Accepted,值得注意的是系统不会自动导入math包,需要在声明时添加。

    解题思路二:使用BigInteger总有种作弊的赶脚,题目的真正意思是让我们用加法模拟乘法的过程,JAVA实现如下:

        static public String multiply(String num1, String num2) {
            StringBuilder result=new StringBuilder();
            for(int i=0;i<num1.length()+num2.length();i++)
            	result.append('0');
            for (int i = num1.length()-1; i >=0; i--)
                for (int j = num2.length()-1; j>=0; j--) {
                    int tmp = (result.charAt(i+j+1) - '0') + (num1.charAt(i) - '0') * (num2.charAt(j) - '0');
                    result.replace(i+j+1, i+j+2, ""+tmp % 10);
                    for(int k=i+j;;k--){
                    tmp=result.charAt(k)- '0' + tmp / 10;
                    result.replace(k, k+1,""+ tmp%10); 
                    if(tmp<10)
                    	break;
                    }
                }
            for (int i = 0; i <result.length(); i++)
            	if(result.charAt(i)!='0')
            		return result.substring(i, result.length());
            return "0";
        }
    
  • 相关阅读:
    构造方法
    linux操作系统基础篇(四)
    linux操作系统基础篇(三)
    linux操作系统基础篇(二)
    linux操作系统基础篇(一)
    计算机网络基础
    计算机操作系统
    计算机基础!
    Open vSwitch intro
    Less(11)
  • 原文地址:https://www.cnblogs.com/tonyluis/p/4496115.html
Copyright © 2011-2022 走看看