LeetCode43------两数相乘
给定两个以字符串形式表示的非负整数 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)或直接将输入转换为整数来处理。
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------两数相乘相关推荐
- Java 递归解决 quot;仅仅能两数相乘的计算器计算x^yquot; 问题
Java 递归解决 "仅仅能两数相乘的计算器计算x^y" 问题 /*** 求一个数的乘方* 求x^y,y是一个正整数. 设计算器仅仅能计算两数相乘,不能一次计算n个数相乘. * 知 ...
- js小数/浮点数 两数相乘,相除精度问题
精度问题 浮点数两数相乘floatingMultiply(arg1, arg2) {if (!((arg1 || arg1 === 0) && (arg2 || arg2 === 0) ...
- 在Java中实现两数相乘
要实现两数相乘算总额:input1.value() * input2.value() 如果直接获取到两个input值相乘,那么结果就有一点点小偏差,是因为精度缺失 $("#totalSum& ...
- 算法题十一 之 两数相乘
题目 给定两个只包含0 - 9 的字符串,输出两个字符串相乘的结果. 要求: 不可以直接把输入的字符串转化成整数 思路 因为不可以直接把输入字符串转化成正数,所以我们只能用代码实现一个位一位之间的相乘 ...
- Java 两数相乘保留两位小数
//两数相乘保留两位小数public static String multiply(String num1, String num2) {BigDecimal b1 = new BigDecimal( ...
- 两数相乘:但是不用*号。如何不用*符号的两数相乘
文章目录 前言 一.题目描述 二.思路和代码 方法一.递归 方法二.快速乘(俄罗斯农民乘法) 前言 今日力扣算题遇到一个有趣的题目 如何不用 * 运算符,实现两正数相乘 ...
- python两数相乘代码_Python 实现大整数乘法算法的示例代码
我们平时接触的长乘法,按位相乘,是一种时间复杂度为 O(n ^ 2) 的算法.今天,我们来介绍一种时间复杂度为 O (n ^ log 3) 的大整数乘法(log 表示以 2 为底的对数). 介绍原理 ...
- 处理两数相乘的黑科技
黑科技来源 我们发现如果两个数都接近long long,乘起来就爆掉了,那该怎么办. 黑科技内容 快速乘 简介 这个应该是白科技. 虽然叫快速乘,但是十分的慢. 速度比快速幂多一个log . 比如说是 ...
- js两数相乘出现多小数
问题截图如上: 出现原因: 浮点数值的最高进度是17位小数,但在进行运算的时候其精确度却远远不如整数:整数在进行运算的时候都会转成10进制: 而Java和JavaScript中计算小数运算时,都会先将 ...
- php两数相乘,php – 如何将数字相乘,直到达到一位数字并计算数字?
搜索热词 它的描述如下: persistence(39) == 3 // because 3*9 = 27,2*7 = 14,1*4=4 // and 4 has only one digit per ...
最新文章
- LeetCode简单题之判断能否形成等差数列
- JavaScript中实现私有属性的写类方式(2)
- 高速串行总线的设计基础(一)同步时序模型介绍
- 项目小白斩获蘑菇街暑期实习offer的面试过程
- 必须重视数据中心的规划设计
- Android Binder基本概念流程学习
- python读取有空行的csv_如何在使用python读取CSV文件时跳过空行
- C++/OpenCV:将数据保存到xml、yaml / 从xml、yaml读取数据
- 杭电1963 完全背包
- 教你用SingalR实现后台开发程序运行时时检测
- 若依集成 WebSocket
- Linux下不停止服务,清空nohup.out文件
- layui框架和vue哪个好_小颖的前端框架
- 下列哪个滤波器是非线性的_上海海事数字信号处理2006试卷A参考答案
- 项目管理知识领域--十大知识领域
- 数学建模解决出版社资源配置问题
- Spring Boot对Ajax跨域访问的支持实现
- 高级运维工程师证书_高级运维工程师的具体职责说明
- 收藏向:看完此篇让你轻松玩转领英
- 百度地图汽车物流数智化应用方案,推进整车运输行业全链条数字化发展