豆包    LeetCode 43. 字符串相乘 Java实现
LeetCode 43.字符串相乘题意给定两个以字符串形式表示的非负整数 num1 和 num2 返回 num1 * num2 的字符串结果不能直接转long/int计算。核心思路m长度 × n长度乘积最多 mn 位创建长度 mn 的数组保存每一位中间乘积从后往前逐位相乘叠加到数组对应位置最后统一处理进位去除前导零输出结果。Java完整代码javaclass Solution {public String multiply(String num1, String num2) {if (“0”.equals(num1) || “0”.equals(num2)) {return “0”;}int m num1.length();int n num2.length();int[] arr new int[m n];// 逆序遍历每一位相乘 for (int i m - 1; i 0; i--) { int a num1.charAt(i) - 0; for (int j n - 1; j 0; j--) { int b num2.charAt(j) - 0; int sum a * b arr[i j 1]; arr[i j 1] sum % 10; arr[i j] sum / 10; } } //拼接字符串跳过前导0 StringBuilder sb new StringBuilder(); for (int x : arr) { if (!(sb.length() 0 x 0)) { sb.append(x); } } return sb.toString(); }}算法原理ij1 低位存放余数 ij 高位存放进位两层循环模拟手工竖式乘法特殊判定有一个是0直接返回0避免空串复杂度时间复杂度O(m\times n)m、n为两个字符串长度空间复杂度O(mn)结果数组测试示例javapublic static void main(String[] args) {Solution solnew Solution();System.out.println(sol.multiply(“123”,“456”));//输出56088}如果你需要模拟竖式逐行累加写法更贴近手写演算我可以给出另一版实现。