【每日一题】43. Multiply Strings
时间:2022-07-24
本文章向大家介绍【每日一题】43. Multiply Strings,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目描述
Given two non-negative integers num1
and num2
represented as strings, return the product of num1
and num2
, also represented as a string.
Example 1:
Input: num1 = "2", num2 = "3"
Output: "6"
Example 2:
Input: num1 = "123", num2 = "456"
Output: "56088"
Note:
- The length of both
num1
andnum2
is < 110. - Both
num1
andnum2
contain only digits0-9
. - Both
num1
andnum2
do not contain any leading zero, except the number 0 itself. - You must not use any built-in BigInteger library or convert the inputs to integer directly.
给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。
num1 和 num2 的长度小于110。 num1 和 num2 只包含数字 0-9。 num1 和 num2 均不以零开头,除非是数字 0 本身。 不能使用任何标准库的大数类型(比如 BigInteger)或直接将输入转换为整数来处理。
题解
由于题目要求:不能将字符串转化成大整数来处理。所以需要换一种方法,这里打算模仿2个整数的计算过程,直接计算结果。
模仿自己手算整数的计算:把两个数末尾对齐,固定一个数字a,从末尾开始,依次用数字与另个整数b的末尾开始相乘,计算进位数、余数;整数b遍历完成后,将指向a中的数字向前移动一位,反复计算,直到数字a遍历完成。
值得注意的是:需要先设定一个字符串用户存储临时的结果。所以,我们要明确字符串的长度,设整数1、整数2长度分别为m,n;那么乘法结果的最大长度为m+n。两个数字都遍历完成后,对临时结果从头到尾进行遍历,舍去其中为‘0’的字符。
完整代码:
class Solution {
public:
string multiply(string num1, string num2) {
int size1 = num1.size(), size2 = num2.size();
string res(size1+size2, '0');
for (int i=size1-1; i>=0; --i){
for (int j=size2-1; j>=0; --j){
int temp = (num1[i] - '0') * (num2[j] - '0') + (res[i+j+1] - '0');
res[i+j] += temp / 10 ;
res[i+j+1] = temp % 10 + '0';
}
}
for (int i=0; i< size1+size2; i++){
if (res[i] != '0')
return res.substr(i);
}
return "0";
}
};
- windows 2003 32位系统能支持的最大内存数
- .Net Core内存回收模式及性能测试对比
- silverlight中顺序/倒序异步加载多张图片
- MySQL数据库性能优化之三
- 谁说 Java 要过时?2017年Java 大事件一览及未来前瞻
- mongodb的用法
- silverlight中如何将string(字符串)写入Resource(资源)?
- Python练习环境搭建-引入预定义数据
- 振幅和成交量的关系
- silverlight中的几个冷门标记 {x:Null},d:DesignWidth,d:DesignHeight
- 用scikit-learn和pandas学习线性回归
- 自动驾驶玩出新花招,以后老司机们就要失业了
- silverlight.net官方网站图片切换源码
- 制作iis自动安装包
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 十四、深入核心,详解事件循环机制
- python基本 -- threading多线程模块的使用
- python基本 -- mysql 的使用
- python爬虫----(6. scrapy框架,抓取亚马逊数据)
- 十五、这一次,彻底弄懂Promise的使用
- python爬虫----(5. scrapy框架,综合应用及其他)
- 十六、半小时掌握ES6常用知识,覆盖80%实践场景
- python爬虫----(4. scrapy框架,官方文档以及例子)
- python爬虫----(3. scrapy框架,简单应用)
- python爬虫----(2. scrapy框架)
- python爬虫----(1. 基本模块)
- 七日Python之路--第十二天(Django Web 开发指南)
- 三日php之路 -- 第一天(php语言参考)
- 三日php之路 -- 第一天(初识php)
- NoSQL数据库 -- MongoDB