题解 | #大数乘法#
大数乘法
https://www.nowcoder.com/practice/c4c488d4d40d4c4e9824c3650f7d5571
package test2; /** * 描述 * 以字符串的形式读入两个数字, * 编写一个函数计算它们的乘积,以字符串形式返回。 */ public class BigCheng { public static void main(String[] args) { BigCheng bigCheng = new BigCheng(); String solve = bigCheng.solve("111", "0"); System.out.println(solve); } public String solve (String s, String t) { //1.判空 if("0".equals(s) | "0".equals(t)) //不短路判断 return "0"; if(s.length()==0 | t.length()==0) return "0"; //2.先进行乘法然后累加 int res[] = new int[s.length()+t.length()]; for (int i = s.length()-1; i >=0 ; i--) { for (int j = t.length()-1; j >=0 ; j--) { //res[i+j+1]是为了将相应的位置数据相加 //即i+j =3 和res的最后一位下标差一个1 res[i+j+1]=res[i+j+1]+( (s.charAt(i)-'0') *(t.charAt(j)-'0') ); } } /* for (int re : res) { System.out.print(re+ " "); }*/ //3.然后处理进位 int up=0; StringBuffer buffer = new StringBuffer(); for (int i = res.length-1; i >=0 ; i--) { int temp = res[i]+up; up = temp /10; buffer.append(temp%10); } String s1 = buffer.reverse().toString(); //System.out.println(s1); //去掉前面的0 if(s1.charAt(0)=='0'){ return s1.substring(1); }else{ return s1; } } }