当前位置: 首页 > 后端技术 > Java

LeetCode-043-StringMultiplication

时间:2023-04-01 15:33:48 Java

StringMultiplication题目描述:给定两个以字符串形式表示的非负整数num1和num2,返回num1和num2的乘积,它们的乘积也以字符串形式表示。例子见LeetCode官网。来源:LeetCode链接:https://leetcode-cn.com/probl...版权归LeetCode所有。商业转载请联系官方授权,非商业转载请注明出处。方案一:数组遍历首先,如果num1和num2都为0,则直接返回空字符串。否则声明一个list为temp,记录每一行相乘的结果;然后将这些行的结果相加;最后以倒序的字符串形式返回累积的结果。importjava.util.ArrayList;importjava.util.List;publicclassLeetCode_043{publicstaticStringmultiply(Stringnum1,Stringnum2){if((num1==null||num1.length()==0)||(num2==null||num2.length()==0)){return"";}if(num1.equals("0")||num2.equals("0")){return"0";}/***如果num2的长度大于num1的长度,交换num1和num2的值*/if(num2.length()>num1.length()){Stringtemp=num1;num1=num2;num2=温度;}/***记录每一行的乘积结果*/Listtemp=newArrayList<>();整数计数=0;对于(inti=num2.length()-1;i>=0;i--){intc2Num=num2.charAt(i)-'0';int[]cur=newint[num1.length()+num2.length()];整数索引=0;for(;index=0;j--){intc1Num=num1.charAt(j)-'0';如果(c2Num*c1Num+addOne>9){cur[index++]=(c2Num*c1Num+addOne)%10;addOne=(c2Num*c1Num+addOne)/10;}else{cur[index++]=c2Num*c1Num+addOne;添加一个=0;}}if(addOne>0){cur[index]=addOne;}temp.add(cur);计数++;}intaddOne=0;列表<整数>结果=新的ArrayList<>();乘积结果相加*/for(inti=0;i9){结果。添加(curNum%10);addOne=curNum/10;}else{result.add(curNum%10);添加一个=0;}}字符串resultStr="";intfirstNoneZeroIndex=-1;/***找到第一个不是0的数*/for(inti=result.size()-1;i>=0;i--){if(result.get(i)!=0){firstNoneZeroIndex=i;休息;}}/***将最终结果拼接成字符串,最后返回*/for(inti=firstNoneZeroIndex;i>=0;i--){resultStr+=String.valueOf(result.get(i));}返回结果;}publicstaticvoidmain(String[]args){//测试用例,预期输出:56088System.out.println(multiply("123","456"));}}[每日留言]路漫漫其修远兮,步步为营,再短的路,不踏足也无法到达