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

示例 1:

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

示例 2:

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

说明:

  1. num1 和 num2 的长度小于110。
  2. num1 和 num2 只包含数字 0-9
  3. num1 和 num2 均不以零开头,除非是数字 0 本身。
  4. 不能使用任何标准库的大数类型(比如 BigInteger)直接将输入转换为整数来处理
package cn.ltcode.test;public class Solution {public static void main(String[] args) {System.out.println(multiply("123", "12"));}public static String multiply(String num1, String num2) {if (num1.equals("0") || num2.equals("0"))return "0";int l1 = num1.length();int l2 = num2.length();int[] res = new int[l1 + l2];// 先计算逐位相乘的结果存到数组指定位置,不管进位for (int i = l2 - 1; i >= 0; i--) {for (int j = l1 - 1; j >= 0; j--) {int pro = (num2.charAt(i) - '0') * (num1.charAt(j) - '0');res[i + j + 1] += pro;}}// 在计算进位后的结果int add = 0;// 初始化进位;for (int i = res.length - 1; i >= 0; i--) {int temp = (res[i] + add) % 10;// 记录进位后的结果add = (res[i] + add) / 10;// 计算进位res[i] = temp;// 将进位后(正确的结果)存到数组指定位置;}// 将结果转化为字符串,使用Stringbuffer;StringBuffer buf = new StringBuffer();for (int i : res) {buf.append(i);}// 将StringBuffer转换为String,注意结果去‘0’String s = new String(buf);if (s.length() > 0 && s.charAt(0) == '0')// 结果最多只会出现首位是0的情况s = s.substring(1);return s;}
}输出:
1476

LeetCode43------两数相乘相关推荐

  1. Java 递归解决 quot;仅仅能两数相乘的计算器计算x^yquot; 问题

    Java 递归解决 "仅仅能两数相乘的计算器计算x^y" 问题 /*** 求一个数的乘方* 求x^y,y是一个正整数. 设计算器仅仅能计算两数相乘,不能一次计算n个数相乘. * 知 ...

  2. js小数/浮点数 两数相乘,相除精度问题

    精度问题 浮点数两数相乘floatingMultiply(arg1, arg2) {if (!((arg1 || arg1 === 0) && (arg2 || arg2 === 0) ...

  3. 在Java中实现两数相乘

    要实现两数相乘算总额:input1.value() * input2.value() 如果直接获取到两个input值相乘,那么结果就有一点点小偏差,是因为精度缺失 $("#totalSum& ...

  4. 算法题十一 之 两数相乘

    题目 给定两个只包含0 - 9 的字符串,输出两个字符串相乘的结果. 要求: 不可以直接把输入的字符串转化成整数 思路 因为不可以直接把输入字符串转化成正数,所以我们只能用代码实现一个位一位之间的相乘 ...

  5. Java 两数相乘保留两位小数

    //两数相乘保留两位小数public static String multiply(String num1, String num2) {BigDecimal b1 = new BigDecimal( ...

  6. 两数相乘:但是不用*号。如何不用*符号的两数相乘

    文章目录 前言 一.题目描述 二.思路和代码 方法一.递归 方法二.快速乘(俄罗斯农民乘法) 前言 今日力扣算题遇到一个有趣的题目         如何不用 * 运算符,实现两正数相乘         ...

  7. python两数相乘代码_Python 实现大整数乘法算法的示例代码

    我们平时接触的长乘法,按位相乘,是一种时间复杂度为 O(n ^ 2) 的算法.今天,我们来介绍一种时间复杂度为 O (n ^ log 3) 的大整数乘法(log 表示以 2 为底的对数). 介绍原理 ...

  8. 处理两数相乘的黑科技

    黑科技来源 我们发现如果两个数都接近long long,乘起来就爆掉了,那该怎么办. 黑科技内容 快速乘 简介 这个应该是白科技. 虽然叫快速乘,但是十分的慢. 速度比快速幂多一个log . 比如说是 ...

  9. js两数相乘出现多小数

    问题截图如上: 出现原因: 浮点数值的最高进度是17位小数,但在进行运算的时候其精确度却远远不如整数:整数在进行运算的时候都会转成10进制: 而Java和JavaScript中计算小数运算时,都会先将 ...

  10. php两数相乘,php – 如何将数字相乘,直到达到一位数字并计算数字?

    搜索热词 它的描述如下: persistence(39) == 3 // because 3*9 = 27,2*7 = 14,1*4=4 // and 4 has only one digit per ...

最新文章

  1. LeetCode简单题之判断能否形成等差数列
  2. JavaScript中实现私有属性的写类方式(2)
  3. 高速串行总线的设计基础(一)同步时序模型介绍
  4. 项目小白斩获蘑菇街暑期实习offer的面试过程
  5. 必须重视数据中心的规划设计
  6. Android Binder基本概念流程学习
  7. python读取有空行的csv_如何在使用python读取CSV文件时跳过空行
  8. C++/OpenCV:将数据保存到xml、yaml / 从xml、yaml读取数据
  9. 杭电1963 完全背包
  10. 教你用SingalR实现后台开发程序运行时时检测
  11. 若依集成 WebSocket
  12. Linux下不停止服务,清空nohup.out文件
  13. layui框架和vue哪个好_小颖的前端框架
  14. 下列哪个滤波器是非线性的_上海海事数字信号处理2006试卷A参考答案
  15. 项目管理知识领域--十大知识领域
  16. 数学建模解决出版社资源配置问题
  17. Spring Boot对Ajax跨域访问的支持实现
  18. 高级运维工程师证书_高级运维工程师的具体职责说明
  19. 收藏向:看完此篇让你轻松玩转领英
  20. 百度地图汽车物流数智化应用方案,推进整车运输行业全链条数字化发展

热门文章

  1. PXE实现批量安装部署(win与linux系统)
  2. GKB字符集转UTF-8
  3. AnimationDrawable 帧动画 爆炸特效
  4. Vulkan 简介及其特点
  5. 个人feedly订阅源分享
  6. 如何精准查找 Maven 依赖
  7. vue读取json文件
  8. 序列1 - 以太坊的诞生,史上最大ICO之一
  9. c语言,判断整数 m 是否素数
  10. Ubuntu搭建服务器