news 2026/5/4 18:16:56

快手 LeetCode 43.字符串相乘

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
快手 LeetCode 43.字符串相乘

思路:乘法的竖式运算。

1.注意:

(1)如果乘数num1的位数为m,乘数num2的位数为n,那么num1 × num2的结果res的最大总位数为m + n

(2)对于num1[i]×num2[j],其结果一定为1-2位,且第一位(前一位)位于res[i + j],第二位(后一位)位于res[i + j + 1]

结合下图更容易理解:

2.复杂度分析:

(1)时间复杂度:O(m * n),其中m和n分别为两个字符串的长度。

(2)空间复杂度:O(m + n),存储结果数组。

附代码:

class Solution { public String multiply(String num1, String num2) { if(num1.equals("0") || num2.equals("0")){ return "0"; } int[] calcu = new int[num1.length() + num2.length()]; for(int i = num1.length() - 1;i >= 0;i--){ int n1 = num1.charAt(i) - '0'; for(int j = num2.length() - 1;j >= 0;j--){ int n2 = num2.charAt(j) - '0'; // res[i + j + 1]表示该位置原来已有的值(可能有原来的进位) // n1 * n2表示当前两位数字的乘积 int sum = (calcu[i + j + 1] + n1 * n2); // 表示当前位应该放的放的数字 calcu[i + j + 1] = sum % 10; // 累加进位,加到前一个位置(i + j) calcu[i + j] += sum / 10; } } StringBuilder res = new StringBuilder(); for(int i = 0;i < calcu.length;i++){ // 跳过前导0 // 两个非0数字相乘,最多只有一个前导0 if(i == 0 && calcu[i] == 0){ continue; } res.append(calcu[i]); } return res.toString(); } }

ACM模式:

import java.util.Scanner; class Solution { public String multiply(String num1, String num2) { if (num1.equals("0") || num2.equals("0")) { return "0"; } int[] calcu = new int[num1.length() + num2.length()]; for (int i = num1.length() - 1; i >= 0; i--) { int n1 = num1.charAt(i) - '0'; for (int j = num2.length() - 1; j >= 0; j--) { int n2 = num2.charAt(j) - '0'; int sum = calcu[i + j + 1] + n1 * n2; calcu[i + j + 1] = sum % 10; calcu[i + j] += sum / 10; } } StringBuilder res = new StringBuilder(); for (int i = 0; i < calcu.length; i++) { if (i == 0 && calcu[i] == 0) { continue; } res.append(calcu[i]); } return res.toString(); } } public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // 读取两个数字字符串 // 支持两个字符串之间用空格分隔,无需换行 String num1 = scanner.next(); String num2 = scanner.next(); // 计算乘积 Solution solution = new Solution(); String result = solution.multiply(num1, num2); System.out.println(result); scanner.close(); } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/4 18:08:27

Switch系统革命性优化指南:从基础到专业级的性能突破

Switch系统革命性优化指南&#xff1a;从基础到专业级的性能突破 【免费下载链接】Atmosphere-stable 大气层整合包系统稳定版 项目地址: https://gitcode.com/gh_mirrors/at/Atmosphere-stable 你是否曾为Switch游戏加载缓慢、系统界面卡顿而烦恼&#xff1f;是否在尝试…

作者头像 李华
网站建设 2026/5/4 18:07:27

基于WebUSB的Raspberry Pi Pico云端开发工具FlashMyPico解析

1. 项目概述 FlashMyPico是一个基于Web浏览器的开发工具&#xff0c;它彻底改变了传统Raspberry Pi Pico系列开发板的编程方式。作为一名嵌入式开发工程师&#xff0c;我深知传统开发流程的繁琐——从GitHub拉取代码、配置本地编译环境、手动烧录固件&#xff0c;每一步都可能遇…

作者头像 李华
网站建设 2026/5/4 18:00:41

基于MCP协议的AI应用连接器:ultra-mcp框架深度解析与实践指南

1. 项目概述&#xff1a;一个面向AI应用开发的“超级连接器”如果你正在构建或使用基于大型语言模型&#xff08;LLM&#xff09;的AI应用&#xff0c;比如一个能帮你分析数据的智能助手&#xff0c;或者一个能自动处理文档的工作流&#xff0c;那你一定遇到过这样的困境&#…

作者头像 李华
网站建设 2026/5/4 18:00:37

为 Claude Code 编程助手配置 Taotoken 作为自定义模型供应商

为 Claude Code 编程助手配置 Taotoken 作为自定义模型供应商 1. 准备工作 在开始配置之前&#xff0c;请确保您已经拥有以下信息&#xff1a; 有效的 Taotoken API Key&#xff08;可在 Taotoken 控制台中创建&#xff09;目标模型 ID&#xff08;可在 Taotoken 模型广场查…

作者头像 李华
网站建设 2026/5/4 17:59:28

从策略原型到生产部署:Backtrader、Zipline、PyAlgoTrade在量化工作流不同阶段的实战表现

从策略原型到生产部署&#xff1a;三大量化框架在完整工作流中的实战指南 量化策略开发从来不是一蹴而就的过程&#xff0c;而是一个包含多个关键阶段的完整工作流。每个阶段对工具的需求各不相同——有些需要极致的灵活性&#xff0c;有些则追求快速的验证能力。本文将带您深…

作者头像 李华