题解 | #大数乘法#
大数乘法
https://www.nowcoder.com/practice/c4c488d4d40d4c4e9824c3650f7d5571
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 第一个整数 * @param t string字符串 第二个整数 * @return string字符串 */ //解法:无进位相乘,后相加 public String solve (String ss, String tt) { char[] s = new StringBuffer(ss).reverse().toString().toCharArray(); char[] t = new StringBuffer(tt).reverse().toString().toCharArray(); int m = s.length,n = t.length; //无进位相乘 int[] tmp = new int[m + n]; for(int i = 0;i < m;i++){ for(int j = 0;j < n;j++){ //下标位置==两个数字的下标位置之和,累加 tmp[i + j] += (s[i] - '0') * (t[j] - '0'); } } //计算加法 int c = 0; StringBuffer res = new StringBuffer(); for(int x : tmp){ c += x; res.append((char)(c % 10 + '0')); c /= 10; } //处理c不等于0的情况 while(c != 0){ res.append((char)(c % 10 + '0')); c /= 10; } //处理前导零 while(res.length() > 1 && res.charAt(res.length() - 1) == '0'){ res.deleteCharAt(res.length() - 1); } return res.reverse().toString(); } }