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中应用程序如何使用系统调用syscall
    Spring Service、Dao进行Junit单元测试
    spring service层单元测试
    java-随机生成用户名(中文版及英文版)
    Java获取随机数
    JUnit单元测试框架的使用
    Mock以及Mockito的使用
    Spring Boot 各Starter介绍
    编写自己的SpringBoot-starter
    Spring Boot使用单元测试
  • 原文地址:https://www.cnblogs.com/tonyluis/p/4496115.html
Copyright © 2011-2022 走看看