43. Multiply Strings

来源:互联网 发布:skycc营销软件怎么样 编辑:程序博客网 时间:2024/04/27 22:42

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.
  • Converting the input string to integer is NOT allowed.

  • You should NOT use internal library such as BigInteger.

大数字符串相乘,最终结果长度不会超过两个串的长度和,例如三位最大999与两位最大99相乘积为98901,不会超过5位数。处理的思想就是乘法的基本操作,回忆一下笔算乘法,然后用例子4716*228说明:








public class Solution {   public static String multiply(String num1, String num2){if(num1.compareTo("0")==0||num2.compareTo("0")==0)return "0";if(num1.length()<num2.length()){String temp=num1;num1=num2;num2=temp;}int len1=num1.length();int len2=num2.length();int len=len1+len2;int[] arr=new int[len1+len2];for(int i=len2-1,k=1;i>=0;i--,k++)for(int j=len1-1,m=1;j>=0;j--,m++){int mul=(num2.charAt(i)-'0')*(num1.charAt(j)-'0');arr[len-k-m+1]+=mul;}int carry=0;for(int i=len-1;i>=0;i--){arr[i]+=carry;carry=arr[i]/10;arr[i]%=10;}StringBuilder sb=new StringBuilder();for(int i=arr[0]==0?1:0;i<len;i++)sb.append(arr[i]);return sb.toString();}}


0 0