leetCode43.字符串相乘

devtools/2024/12/28 1:03:38/

题目:

给定两个以字符串形式表示的非负整数num1和num2,返回num1和num2的乘积,它们的乘积也表示为字符串形式。
注意:不能使用任何内置的BigInteger库或直接将输入转换为整数。

示例1:
输入:num1=“2”,num2=“3”
输出:“6”

示例2:
输入:num1=“123”,num2=“456”
输出:“56088”

思路

  • 通过倒序,从个位逐步往前遍历 两个字符串,并进行计算
  • 遍历结果数组,计算进位。

代码:

        if (num1 == null) {return num2;}if (num2 == null) {return num1;}//两数相乘,其中一个为0,结果必定是0if (num1.equals("0") || num2.equals("0")) {return "0";}int m = num1.length();int n = num2.length();//存放结果的数组,长度设置为 m+nint[] arr = new int[m+n];//第一个字符串。倒序for (int i=m-1; i>=0; i--) {//通过字符减去 '0',可以得到数字int x = num1.charAt(i) - '0';for (int j = n-1; j>=0 ;j--) {//第二个字符串。倒序int y = num2.charAt(j) - '0';//字符串相乘arr[ i+j+1] += x* y;}}//遍历结果数组,计算进位for( int i= m+n-1; i>0; i--) {arr[i-1] += arr[i]/10;arr[i] %= 10;}//如果计算结果的第一位是0就忽略,直接从第二位开始算int index = arr[0]==0? 1:0;StringBuffer sb = new StringBuffer();while ( index< m+n) {//将计算结果拼接成字符串sb.append( arr[index]);index++;}return sb.toString();}

http://www.ppmy.cn/devtools/145973.html

相关文章

【ES6复习笔记】Class类(15)

介绍 ES6 提供了更接近传统语言的写法&#xff0c;引入了 Class&#xff08;类&#xff09;这个概念&#xff0c;作为对象的模板。通过 class 关键字&#xff0c;可以定义类。基本上&#xff0c;ES6 的 class 可以看作只是一个语法糖&#xff0c;它的绝大部分功能&#xff0c;…

mysql 数据库迁移到达梦数据库

1.windows安装达梦数据库&#xff0c;去官网下载 dm8 进行安装&#xff0c;安装后&#xff0c;可以使用管理工具管理数据 使用迁移工具对数据进行迁移&#xff1b; 2.使用php 或者 thinkphp连接达梦数据库 2.1、先PHP开启DM扩展 从达梦数据库安装目录下drivers/php_pdo 复制对…

算法的学习笔记— 圆圈中最后剩下的数(牛客JZ62)

&#x1f3e0;个人主页&#xff1a;尘觉主页 文章目录 62. 圆圈中最后剩下的数题目链接题目描述解题思路Java 实现思考分析&#x1f604;总结 62. 圆圈中最后剩下的数 题目链接 NowCoder 题目描述 让小朋友们围成一个大圈。然后&#xff0c;随机指定一个数 m&#xff0c;让…

R语言数据分析案例47-上海译文出版社旗舰店图书分析和可视化

一、研究背景 随着数字化时代的发展&#xff0c;图书出版行业面临着日益激烈的市场竞争。上海译文出版社作为一家知名的出版机构&#xff0c;其旗舰店的图书销售数据蕴含着丰富的信息。对最新入库图书进行深入分析和可视化呈现&#xff0c;有助于出版社更好地了解市场动态、读…

重温设计模式--6、享元模式

文章目录 享元模式&#xff08;Flyweight Pattern&#xff09;概述享元模式的结构C 代码示例1应用场景C示例代码2 享元模式&#xff08;Flyweight Pattern&#xff09;概述 定义&#xff1a; 运用共享技术有效地支持大量细粒度的对象。 享元模式是一种结构型设计模式&#xff0…

Docker完整技术汇总

Docker 背景引入 在实际开发过程中有三个环境&#xff0c;分别是&#xff1a;开发环境、测试环境以及生产环境&#xff0c;假设开发环境中开发人员用的是jdk8&#xff0c;而在测试环境中测试人员用的时jdk7&#xff0c;这就导致程序员开发完系统后将其打成jar包发给测试人员后…

深入了解Linux —— make和makefile自动化构建工具

什么是make/makefile 在之前写代码的过程中&#xff0c;我们都是对一个文件进行编译链接&#xff08;gcc编译)&#xff0c;但是如果一个项目中&#xff0c;源代码文件非常的多&#xff0c;我们总不能一个一个的进行编译链接&#xff0c;这也太麻烦了&#xff1b;所以现在就来学…

前端真实面试题自用

一、写在前面 笔者&#xff0c;经过计算机学硕考研的失败后&#xff0c;想谋求一份前端工作实在是太难了。一方面&#xff0c;确实曾经学习过的东西很久没有拾起&#xff0c;另一方面&#xff0c;对于前端面经还是记忆不深刻&#xff0c;特地写此贴记录笔者在真实前端面试中遇…