首页 > 代码库 > leetcode_Multiply Strings
leetcode_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(a).Multiply(BigInteger(b))的功能,但非常显然,leetcode中不让用BigInteger
代码:
public class Solution { public String multiply(String num1, String num2) { if(num1==null||num2==null) return new String(); num1=num1.trim(); num2=num2.trim(); if(num1.equals("0")||num2.equals("0")) return "0"; List<Integer>listNum1=new ArrayList<>(); List<Integer>listNum2=new ArrayList<>(); List<Integer>listResult=new ArrayList<>(); int len1=num1.length(); int len2=num2.length(); int i=0,j=0,lenResult=0,index=0; int baseNum=0,flowNum=0,tempNum1=0,tempNum2=0; for( i=len1-1;i>=0;i--) listNum1.add(num1.charAt(i)-‘0‘); for( i=len2-1;i>=0;i--) listNum2.add(num2.charAt(i)-‘0‘); tempNum2=listNum2.get(0); for(i=0;i<len1;i++) { tempNum1=listNum1.get(i); tempNum1=tempNum1*tempNum2+flowNum; baseNum=tempNum1%10; flowNum=tempNum1/10; listResult.add(baseNum); } if(flowNum!=0) { listResult.add(flowNum); flowNum=0; } for(j=1;j<len2;j++) { baseNum=0;flowNum=0; tempNum2=listNum2.get(j); lenResult=listResult.size(); for(i=0;i<len1;i++) { index=i+j; if(index<lenResult) { tempNum1=listNum1.get(i); tempNum1=tempNum1*tempNum2+flowNum+listResult.get(index); baseNum=tempNum1%10; flowNum=tempNum1/10; listResult.set(index, baseNum); } else { tempNum1=listNum1.get(i); tempNum1=tempNum1*tempNum2+flowNum; baseNum=tempNum1%10; flowNum=tempNum1/10; listResult.add(baseNum); } } if(flowNum!=0) { listResult.add(flowNum); flowNum=0; } } if(flowNum!=0) listResult.add(flowNum); StringBuilder sBuilder=new StringBuilder(); for(int num:listResult) sBuilder.append(num); sBuilder.reverse(); return sBuilder.toString(); } }
leetcode_Multiply Strings
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。