/**
* 43. 字符串相乘
* @author wsq
* @date 2020/8/13
给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。
示例 1:
输入: num1 = "2", num2 = "3"
输出: "6"
示例 2:
输入: num1 = "123", num2 = "456"
输出: "56088"
说明:
num1 和 num2 的长度小于110。
num1 和 num2 只包含数字 0-9。
num1 和 num2 均不以零开头,除非是数字 0 本身。
不能使用任何标准库的大数类型(比如 BigInteger)或直接将输入转换为整数来处理。
链接:https://leetcode-cn.com/problems/multiply-strings
*/
package code.wsq.notsubmit;
public class StringMultiply {
/**
* 采用基本每位相乘后再相加的思想
* 其中与我们自己做乘法不同的地方是
* 除了乘数的个位数以外,其他的位都需要向后补0
*/
public String multiply(String num1, String num2) {
if(num1.equals("0") || num2.equals("0")) {
return "0";
}
String ans = "0";
int n = num1.length();
int m = num2.length();
for(int i = n-1; i >= 0; --i) {
StringBuilder curr = new StringBuilder();
for(int j = n-1; j > i; --j) {
curr.append("0");
}
int add = 0;
int x = num1.charAt(i) - '0';
for(int j = m-1; j >= 0; --j) {
int y = num2.charAt(j) - '0';
int result = x * y + add;
curr.append(result % 10);
add = result / 10;
}
if(add != 0) {
curr.append(add % 10);
}
ans = addStrings(ans, curr.reverse().toString());
}
return ans;
}
public String addStrings(String num1, String num2) {
StringBuilder ans = new StringBuilder();
int i = num1.length() - 1;
int j = num2.length() - 1;
int add = 0;
while(i >= 0 || j >= 0 || add != 0) {
int x = i >= 0 ? num1.charAt(i) - '0' : 0;
int y = j >= 0 ? num2.charAt(j) - '0' : 0;
int result = x + y + add;
ans.append(result % 10);
add = result / 10;
i--;
j--;
}
ans.reverse();
return ans.toString();
}
public static void main(String[] args) {
String num1 = "12";
String num2 = "12";
StringMultiply sm = new StringMultiply();
String ans = sm.multiply(num1, num2);
System.out.println(ans);
}
}
相关推荐
LeetCode 第43题:字符串相乘
通过对LeetCode第43题——字符串相乘的详细剖析,我们学习了如何用代码来模拟手工乘法的过程。这个题目不仅让我们重温了小学的数学知识,还让我们在编程中体会到了解决问题的成就感。在这篇文章中,我们详细讲解了代码的实现逻辑,并通过Mermaid图展示了代码的流程。希望通过这些例子和解析,能帮助大家更好地理解这道题目的解题思路和实现方法。记住,编程的乐趣在于解决问题的过程,而不是一味追求结果。愿你在编程的道路上,越挫越勇,继续探索新的技术和方法!
Leetcode 43. 字符串相乘
题目 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 示例 1: 输入: num1 = “2”, num2 = “3” 输出: “6” 示例 2: 输入: num1 = “123”, num2 = “456” 输出: “56088” 说明: num1 和 num2 的长度小于110。 num1 和 num2...
windows中如何将已安装的nodejs高版本降级为低版本
第一步:先清空本地安装的node.js版本 1.按健win+R弹出窗口,键盘输入cmd,然后敲回车(或者鼠标直接点击电脑左面最左下角的win窗口图标弹出,输入cmd再点击回车键) 然后进入命令控制行窗口,并输入where node查看之前本地安装的node的路径 2.找到上面找到的路径,将node.exe所在的父目录里面的所有东西都删除 3.为了彻底删除之前安装的node.js,鼠标点击电脑左面最左下角的win窗口图标弹出,输入“控制面板”再点击回车键进入,进入控制面板后,找到所安装的node.js并
leetcode 43 : 字符串相乘
leetcode 43 : 字符串相乘 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数。 示例 1: 输入: num1 = "2", num2 = "3" 输出: "6" 示例 2: 输入: num1 = "123", num2 = "456" 输出: "56088" 提示: 1 <= num1.length, nu
NLP DAY1: 文本数据读取
txt 文本数据的读写CSV 及 Excel 文本数据的读写更多的 DataFrame 操作数据规模太大怎么办相信通过本次实验的学习,同学们可以游刃有余地面对各种数据文件了。在接下来的实验中,我们将开始真正地开启自然语言处理之旅,开始认识并熟悉一些常见的针对文本本身的预处理操作。
【SEW-伺服电机-Profinet-io通讯控制——伺服配置】
SEW-伺服电机-Profinet-io通讯控制——伺服配置一、本次使用配置说明编写经历受国际形式与疫情影响相关资料查询阅读测试验证不易二、伺服配置流程1.基本准备条件2.硬件-电路连接3.设备在线连接4.软件-参数配置5.手动运行测试6.PN-IO自动控制配置8.PLC1200硬件组态9.PLC软件编程10.调试故障分析三、总结四、参考 一、本次使用配置说明编写经历 受国际形式与疫情影响 由于近期受国际形式影响以及全球疫情影响,Siemens等常用产品供货期与供货量严重受限,项目上不得不采取选用其它替代产
大整数相乘 leetcode 43. 字符串相乘
题目描述 有两个用字符串表示的非常大的大整数,算出他们的乘积,也是用字符串表示。不能用系统自带的大整数类型。 输入描述: 空格分隔的两个字符串,代表输入的两个大整数 输出描述: 输入的乘积,用字符串表示 示例1 输入 72106547548473106236 982161082972751393 输出 70820244829634538040848656466105986748 思路 方法来源:...
DC综合中set_dft_signal的实战配置与优化策略
本文深入解析了DC综合中set_dft_signal命令的实战配置与优化策略。文章从命令的核心作用出发,详细拆解了-view、-type、-usage等关键参数,并通过扫描使能与时钟门控的实战案例,展示了如何正确配置以实现测试模式下的功耗优化。同时,文章总结了高级优化策略、与低功耗流程的协同方法以及常见错误排查清单,旨在帮助数字芯片设计工程师构建高可测性、低功耗的稳健DFT基础。
Leetcode_43. 字符串相乘
本文介绍了LeetCode字符串相乘问题的两种解法:暴力解法和模拟乘法。暴力解法因数据量大会超出整型范围而被否定。重点讲解了模拟乘法解法,通过逐位相乘并处理进位,使用反向迭代器从个位开始计算,最后通过字符串相加实现竖式乘法。文中提供了完整的C++代码实现,包括字符串相加辅助函数和主乘法函数,解决了大数相乘问题。
数字逻辑Fundamentals of Digital Logic with Verilog Design | 3rd Edition Solutins Chapter 2(step by step)
数字逻辑第二章习题和详细步骤 2-1 ~ 2-78
把 ABAP ALV 做成可点、可改、可保存:Interactive Editable ALV Grid 的一套落地打法
文章摘要(148字): SAP ALV报表开发中,交互式可编辑网格的实用方案需解决三个核心问题:数据展示、交互下钻与编辑保存。本文以SCARR航空公司和SFLIGHT航班数据为例,演示如何实现双击主列表下钻明细、动态切换编辑模式、精确保存修改的技术路线。关键点包括:通过PF-STATUS添加业务按钮、使用CHECK_CHANGED_DATA同步前端修改、保护关键字段避免误操作,以及变更数据的审计跟踪方法。该方案适用于SAP GUI环境下的快速业务调整需求,相比Fiori开发具有更高的实施效率。
Leetcode 43. 字符串相乘
Leetcode 43. 字符串相乘 字符串相乘 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 示例 1: 输入: num1 = “2”, num2 = “3” 输出: “6” 示例 2: 输入: num1 = “123”, num2 = “456” 输出: “56088” 说明: num1 和 num2 的长度小于110。 num1 和 num2 只包含数字 0-9。 num1 和 num2 均不以零开头,除非是数字
Playwright MCP:开启浏览器自动化的新篇章
在当今数字化时代,浏览器自动化技术在众多领域发挥着至关重要的作用,从简单的网页爬取到复杂的自动化测试,再到智能代理与网页的交互等场景,都离不开高效、可靠的浏览器自动化工具。而微软推出的项目,正是在这一领域的一次创新性探索,它为开发者带来了全新的视角和强大的功能支持。本文将深入探讨的概念、架构、代码示例、应用场景、注意事项以及未来发展方向,帮助读者全面了解这一前沿技术。
LeetCode 43字符串相乘
LeetCode 43字符串相乘 题目简述:给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 输入:num1 = “2”, num2 = “3” 输出:“6” 输入:num1 = “123”, num2 = “456” 输出:“56088” 说明 num1 和 num2 的长度小于 110。 num1 和 num2 只包含数字 0-9。 num1 和 num2 均不以零开头,除非是数字 0
【WRF运行报错】总结WRF运行时报错及解决方案(持续更新)
总结WRF运行时报错及解决方案(持续更新)
Statistics and Machine Learning Toolbox
Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具
leetcode43 字符串相乘 python
字符串相乘(中等)(leetcode43) 给定两个以字符串形式表示的非负整数num1和num2,返回num1和num2的乘积,它们的乘积也表示为字符串形式。 示例1:输入: num1 = "2", num2 = "3",输出: "6" 示例2:输入: num1 = "123", num2 = "456",输出: "56088" 说明:不能使用任何标准库的大数类型(比如 B...
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
Leetcode 43. Multiply Strings 字符串相乘
Leetcode 43. Multiply Strings 字符串相乘 标签: Leetcode 题目地址: https://leetcode-cn.com/problems/multiply-strings/ 题目描述 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘...
ET2012新版免狗免安装绿色软件
ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,
迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)
迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)
leetcode43. 字符串相乘
相乘,首先我们就知道了,这两个字符串转化成得数字有可能是0,如果==0,那么直接返回字符串0就行了,如果不为0,我们小学都学过乘法的竖式计算,我们可以先举个例,例如字符串123*字符串45,那么该如何做呢?首先我们肯定是得把字符串转化为数字,必须是一个一个字符的转化,因为题目要求不能直接转化,也不能使用大数相乘标准库,转化为数字后,就按照小学时我们给乘法排竖式的方式进行计算。我们可以看到题目是要求我们将两个字符串转化为。
LeetCode 43. 字符串相乘
LeetCode 43. 字符串相乘 题目 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 示例 1: 输入: num1 = “2”, num2 = “3” 输出: “6” 示例 2: 输入: num1 = “123”, num2 = “456” 输出: “56088” 说明: num1 和 num2 的长度小于11...
leetcode 43 字符串相乘
本题实际上是考察,我们可以来求解问题,但是我们无需完全按照列竖式计算的流程(先进位再求和)进行模拟,我们可以,以示例2为例:左图为一般列竖式计算的流程(先进位再求和),右图为先求和再进位的流程,观察可知,二者计算结果相同,均正确。
leetcode—43 字符串相乘
如果两字符串的都不为0,那么我们可以采用“竖式乘法”来模拟字符串相乘的乘积,根据竖式乘法的性质可知,由于需要遍历字符串,所以只能将字符串中的整数的每一位分别拆开来计算,如果我们模拟num1为被乘数,num2为乘数,则num2除了最低位以外,其余的每一位运算结果都需要补零。容易知道,当一个长度为m的num1数组与长度为n的num2数组相乘时,产生的结果值不会大于m+n,且最小应为m+n-1,举例:长度为2的最小情况:10*10=100,长度为m+n-1,最大情况:99*99
leetcode 43. 字符串相乘
给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。我们可以使用加法原理,先计算第一个的数值,在第二个的时候直接用数值乘以位数再相加求和,循环的结果就是我们需要的结果。将每一个字符单独提取出来,减去'0'再转换为int类型就是当前的数字了。输入: num1 = "123", num2 = "456"输入: num1 = "2", num2 = "3"先是r=r+3x1234(开始的r=0)比如"1234"*"123"
leetcode--43. 字符串相乘
题目:43. 字符串相乘链接:https://leetcode-cn.com/problems/multiply-strings/description/模拟大整数乘法,给定的两个乘数为字符串格式。python:def myMulti(num1,num2): if num2[0]=="0" or num1[0]=="0": return "0" res,add=""...
271



被折叠的 条评论
为什么被折叠?



