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)或直接将输入转换为整数来处理。
解题思路
- 先算num1和num2的长度
- 两数相乘,最大长度为2个值的长度和,所以创建一个数组,长度为两个字符串的长度和
- 从num2的个位开始,依次和num1的每一位相乘,个位的位置为i+j+1,进位的位置为i+j,将个位和进位依次放入数组,个位是相乘的结果加上要放入的位置的值的和的个位,进位的位置是在原数据的基础上加上进位的值。最后输出字符串
解题例子
789 * 256
数值:num1 = 789, num2 = 256
长度:n1 = 3,n2 = 3
相乘之后的答案的长度最大为6,所以,数组result[]长度为6
从256的最后一位开始,也就是6
j = 2,i = 2,那么个位位置为p2 = i + j + 1= 5,进位位置为p1 = i + j = 4 , 6 * 9 + 0= 54 ,result = [ , , , ,5,4]
j = 2,i = 1,那么个位位置为p2 = i + j + 1= 4,进位位置为p1 = i + j = 3 , 6 * 8 + 5 = 53 ,result = [ , , ,5,3,4]
j = 2,i = 0,那么个位位置为p2 = i + j + 1= 3,进位位置为p1 = i + j = 2 , 6 * 7 + 5 = 47 ,result = [ , ,4,7,3,4]
j = 1,i = 2,那么个位位置为p2 = i + j + 1= 4,进位位置为p1 = i + j = 3 , 5 * 9 + 3 = 48 ,result = [ , ,4,11,8,4]
j = 1,i = 1,那么个位位置为p2 = i + j + 1= 3,进位位置为p1 = i + j = 2 , 5 * 8 + 11 = 51 ,result = [ , ,9,1,8,4]
j = 1,i = 0,那么个位位置为p2 = i + j + 1= 2,进位位置为p1 = i + j = 1 , 5 * 7 + 9 = 44 ,result = [ ,4,4,1,8,4]
j = 0,i = 2,那么个位位置为p2 = i + j + 1= 3,进位位置为p1 = i + j = 2 , 2 * 9 + 1 = 19 ,result = [ ,4,5,9,8,4]
j = 0,i = 1,那么个位位置为p2 = i + j + 1= 2,进位位置为p1 = i + j = 1 , 2 * 8 + 5 = 21 ,result = [ ,6,1,9,8,4]
j = 0,i = 0,那么个位位置为p2 = i + j + 1= 1,进位位置为p1 = i + j = 0 , 2 * 7 + 6 = 20 ,result = [2,0,1,9,8,4]
最终结果是201984
代码实现
1 |
class {
|
LeetCode43(字符串相乘)的更多相关文章
- [Swift]LeetCode43. 字符串相乘 | Multiply Strings
Given two non-negative integers num1 and num2 represented as strings, return the product of num1and ...
- LeetCode 43. 字符串相乘(Multiply Strings)
43. 字符串相乘 43. Multiply Strings 题目描述 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. ...
- 代码题(59)— 字符串相加、字符串相乘、打印最大n位数
1.415. 字符串相加 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和. 思路:和链表相加类似,求进位. class Solution { public: string addS ...
- Java实现 LeetCode 43 字符串相乘
43. 字符串相乘 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. 示例 1: 输入: num1 = "2& ...
- [LeetCode]415. 字符串相加、43. 字符串相乘
题目 415. 字符串相加 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和. 题解 维护一个temp表示当前两数相加+上一个进位的和. 每次更新结果的一位. 注意终止条件. 最后将 ...
- Leetcode43. Multiply Strings字符串相乘(大数相乘)
给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. 示例 1: 输入: num1 = "2", num ...
- [LeetCode] Multiply Strings 字符串相乘
Given two numbers represented as strings, return multiplication of the numbers as a string. Note: Th ...
- LeetCode(43):字符串相乘
Medium! 题目描述: 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. 示例 1: 输入: num1 = &quo ...
- [LeetCode] 43. Multiply Strings ☆☆☆(字符串相乘)
转载:43. Multiply Strings 题目描述 就是两个数相乘,输出结果,只不过数字很大很大,都是用 String 存储的.也就是传说中的大数相乘. 解法一 我们就模仿我们在纸上做乘法的过程 ...
随机推荐
- latex学习笔记----基本知识、文档排版
1.空格和制表符等空白字符视为相同的空白距离,多个连续的空白字符等同为一个字符. 2.# $ % ^ _ { } ~ 在这些字符前面加上反斜线,就可以在文本中得到它们. 反斜线\不 ...
- Maven--归类依赖
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- 关于mysql一边查一边更新
update test_table set user_id = 112 where id in (select id from ( select id from test_table where nu ...
- JS - ES5与ES6面向对象编程
1.面向对象 1.1 两大编程思想 1.2 面向过程编程 POP(Process-oriented programming) 1.3 面向对象编程 OOP (Object Oriented Progr ...
- RL78 定义常量变量在指定的地址方法
若想定义的常量地址在远端寻址,定义section段时 如定义MCU_INFOR段 则段名为MCU_INFOR_f 后缀需要添加f,近端寻址添加n. 程序中定义常量 需要使用#pragma 指 ...
- 九、Shell脚本高级编程实战第九部
一.监控mysql主从同步是否异常,如果异常,发送短信给管理员 1)开发一个守护进程脚本每30秒实现检测一次. 2)如果错误号是:1158.1159.1008.1007.1062,请跳过 3)请使用数 ...
- Java使用Thrift,Thrift结构体定义
1.Thrift定义文件,Thrift常见的数据类型 1.基本类型(括号内为对应的Java类型): bool(boolean): 布尔类型(TRUE or FALSE) byte(byte): 8位带 ...
- 吴裕雄--天生自然 JAVA开发学习:包(package)
package pkg1[.pkg2[.pkg3…]]; package net.java.util; public class Something{ ... } package animals; i ...
- JS中的7种设计模式
第九章Refactoring to OOP Patterns 重构为OOP模式 7种设计模式: 1,模版方法模式(template method) 2,策略模式(strategy) 3,状态模式(st ...
- linux下 c语言调用c++
/*****************************g++编译cpp 文件为库文件.编译C文件时gcc 要链接 -l stdc++ 这个库**(非常重要)*///定义c++ class 头文件 ...