leetcode_43.字符串相乘

ops/2025/2/12 22:51:25/

43. 字符串相乘

题目描述:给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。

注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数。

示例 1:

输入: num1 = "2", num2 = "3"
输出: "6"

示例 2:

输入: num1 = "123", num2 = "456"
输出: "56088"

提示:

  • 1 <= num1.length, num2.length <= 200
  • num1 和 num2 只能由数字组成。
  • num1 和 num2 都不包含任何前导零,除了数字0本身。
 代码思路:
  1. 代码获取了输入字符串的长度,并创建了一个数组 temp 用于存储中间结果,其长度为 len1 + len2 - 1。这是因为两个长度分别为 len1len2 的数字相乘的结果的最大位数为 len1 + len2,但是最高位不会在中间结果中出现。

  2. 接着,两层循环遍历每一位数字,并将它们两两的乘积加到 temp 数组的对应位置上。

  3. 然后,通过一个循环来处理进位,将 temp 数组中的每一位进行进位处理,确保每一位都在 0 到 9 之间。

  4. 最后,代码使用 StringBuilder 将 temp 数组中的每一位数字转换为字符串,并返回结果。

示例:

class Solution {public String multiply(String num1, String num2) {if (num1.equals("0") || num2.equals("0")) return "0";int len1 = num1.length();int len2 = num2.length();int[] temp = new int[len1 + len2 - 1];for (int i = 0; i < len1; i++) {for (int j = 0; j < len2; j++) {temp[i + j] += (num1.charAt(i) - '0') * (num2.charAt(j) - '0');}}for (int i = len1 + len2 - 2; i > 0; i--) {temp[i - 1] += temp[i] / 10;temp[i] %= 10;}StringBuilder sb = new StringBuilder();for (int x : temp) sb.append(x);return sb.toString();}
}


http://www.ppmy.cn/ops/30286.html

相关文章

CentOS-Stream-9添加删除账户

添加普通用户&#xff0c;既可以登录系统&#xff0c;也可以访问服务 useradd -s /bin/bash -m abc 添加abc用户&#xff0c;自动创建目录。 passwd abc 设置用户密码 添加不能登录系统的用户&#xff0c;可以访问ftp服务 vim /etc/shells&#xff0c;在其中添加一行/sbin/…

centos7源码编译python3.12.3

centos7源码编译python3.12.3 { 1 下载 https://www.python.org/downloads/source/ 选择最新的stable 2 解压 tar zxvf Python-3.12.3.tgz 3 配置 ./configure --enable-optimizations 4 编译 make -j 8 出现错误&#xff1a;SystemError: <built-in function compile> r…

Kerckhoffs原则详细介绍

Kerckhoffs原则&#xff0c;也被称为柯克霍夫原则或柯克霍夫假说&#xff0c;是密码学中的一个核心原则&#xff0c;它起源于19世纪&#xff0c;由荷兰语言学家和密码学家Auguste Kerckhoffs提出。这一原则在密码学领域具有深远的影响&#xff0c;为现代密码系统的设计和安全性…

navicat连接MySQL时1045报错

当登录MySQL数据库出现 Error 1045 错误时&#xff0c;表明你输入的用户名或密码错误被拒绝访问了&#xff1b;MySQL服务搭建后&#xff0c;默认root用户是不能进行远程访问连接的。 无法连接的可能有&#xff1a; 数据库没开启——开启数据库 用户名或密码错误——更改密码 连…

【译】Celery文档1:First Steps with Celery——安装和配置Celery

https://docs.celeryq.dev/en/stable/getting-started/first-steps-with-celery.html#first-steps Celery的第一步 Celery时一个自带电池的任务队列。 本教程内容&#xff1a; 安装消息传输代理(broker)安装Celery并创建第一个任务(task)启动Celery工作进程(worker)并执行任务…

Java设计模式 _结构型模式_桥接模式

一、桥接模式 1、桥接模式 桥接模式&#xff08;Bridge Pattern&#xff09;是一种结构型设计模式。用于把一个类中多个维度的抽象化与实现化解耦&#xff0c;使得二者可以独立变化。 2、实现思路 使用桥接模式&#xff0c;一定要找到这个类中两个变化的维度&#xff1a;如支…

【leetcode】缓存淘汰策略题目总结

146. LRU 缓存 我们使用了一个双向链表cache来存储数据,同时使用一个哈希表hash_map来映射键和链表节点的迭代器。当调用get(key)函数时,我们首先检查hash_map中是否存在该key,如果存在则将之前位置移到链表头部并返回值;当调用put(key, value)函数时,我们先检查hash_map…

深度学习避坑指南

安装设置了CUDA&#xff0c;但在anaconda的虚拟环境中&#xff0c;CUDA_HOME显示未设置&#xff0c;torch.cuda.is_available()输出未False。 原因&#xff1a;Cuda和torch版本不匹配。 解决办法&#xff1a;检查环境变量&#xff0c;并安装于CUDA适配的torch