leetcode 43. Multiply Strings

    xiaoxiao2021-09-05  95

    按照笔算的算法即可

    package leetcode43_3; class Solution { public String add(String num1, String num2) { String res=null; String temp=null; int len1=num1.length(); int len2=num2.length(); int i,jin,currentRes,minLen; minLen=len1; if(len1>len2) { temp=num1; num1=num2; num2=temp; minLen=len2; } //num1短,num2长 jin=0;//进位 for(i=0;i<minLen;i++) { // System.out.println("11111"); int x=num1.charAt(num1.length()-i-1)-'0'; int y=num2.charAt(num2.length()-i-1)-'0'; currentRes=(x+y+jin); jin=(x+y+jin)/10; if(res==null) res=String.valueOf((char)(currentRes+'0')); else res=String.valueOf((char)(currentRes+'0'))+res; } if(len1==len2&&jin!=0) { res=(char)(jin+'0')+res; } else { for(i=num1.length();i<num2.length();i++) { // System.out.println("22222"); int x=num2.charAt(num2.length()-i-1)-'0'; currentRes=(x+jin); jin=(x+jin)/10; res=(char)(currentRes+'0')+res; } if(jin!=0) res=(char)(jin+'0')+res; } return res; } //num1为大数,乘以num2的每一位加到结果上 public String multiply(String num1,String num2){ String res=new String("0"); int len1=num1.length(); int len2=num2.length(); if(len1==0||len2==0) return res; if(num1.equals("0")||num2.equals("0")) return res; int i,j,k; String currentMulRes,temp; currentMulRes=""; int bigLength=len1; int jin=0; int currentSingleMul; if(len1<len2) { temp=num1; num1=num2; num2=temp; bigLength=len2; } for(i=num2.length()-1;i>=0;i--) { for(j=bigLength-1;j>=0;j--) { currentSingleMul=(num1.charAt(j)-'0')*(num2.charAt(i)-'0')+jin; jin=currentSingleMul/10; if(currentMulRes.length()==0) { currentMulRes=String.valueOf((char)(currentSingleMul+'0')); } else { currentMulRes=String.valueOf((char)(currentSingleMul+'0'))+currentMulRes; } } if(jin!=0) { currentMulRes=String.valueOf((char)(jin+'0'))+currentMulRes; } for(k=0;k<num2.length()-1-i;k++) { currentMulRes=currentMulRes+'0'; } res=this.add(res,currentMulRes); currentMulRes=""; jin=0; } return res; } } public class bigmul { public static void main(String args[]) { Solution slu=new Solution(); //String num1="67671277416626746657687631784163120468201083678333022807"; //String num2="7513826174917015375128752933843614929738429142691134209414990271995868820936126459879940531569978476559542476"; String num1="56"; String num2="567"; String res=slu.multiply(num1, num2); //String res=slu.add("45792", "160"); System.out.println(res); } }

    转载请注明原文地址: https://ju.6miu.com/read-677449.html

    最新回复(0)