当前位置:网站首页>【LeetCode】43. String multiplication
【LeetCode】43. String multiplication
2022-07-01 15:50:00 【Uaena_ An】
43. String multiplication

🧸 Reading questions
Give two strings , Multiply to get a string , This problem can't be solved by plastic surgery , Because the later test examples will be very large , plastic , Long plastic surgery can't be installed !
🧸 Ideas
To multiply by bits , Save in string , Then add the strings obtained by the product , The final result is stored in the string in turn ,
🧸 Code
class Solution {
public:
string addStrings(string& count, string& sum)
{
//end1,end2 Add from the tail of two numbers ,carry Record carry
int end1 = count.size() - 1, end2 = sum.size() - 1, carry = 0;
string ret;// Record the sum of two numbers added
while (end1 >= 0 || end2 >= 0)
{
// If end1 Greater than 0 shows count There are also a number , be x1 take end1 The value of a , Otherwise take 0
int x1 = 0;
if (end1 >= 0)
{
x1 = count[end1] - '0';
--end1;
}
int x2 = 0;
if (end2 >= 0)
{
x2 = sum[end2] - '0';
--end2;
}
//add Record the sum of two numbers added , Plus carry , The first carry is 0
int add = x1 + x2 + carry;
// If add Greater than 9, It indicates that carry is required , also add To subtract 10
// And enter the position 1 , Otherwise, enter the position 0, Otherwise, the carry will retain the result of the last carry , There will be errors
if (add > 9)
{
carry = 1;
add -= 10;
}
else {
carry = 0;
}
// Insert the remainder of the carry character at the end of ret in , Turn it over later , To improve efficiency
ret += add;
}
// Come here , It means that both numbers have been added , But there is also carry 1 position , Insert the tail
if (carry != 0)
{
ret += carry;
carry = 0;
}
// Flip
reverse(ret.begin(), ret.end());
// Convert to numeric characters
for (auto& e : ret)
{
e += '0';
}
return ret;
}
string multiply(string num1, string num2) {
if (num1 == "0" || num2 == "0")
{
return "0";
}
string count = "0";// Record the sum
int end1 = num1.size() - 1, end2 = num2.size() - 1;
// Multiply by place ,num2 every * num1 All bits
for (int i = end2; i >= 0; --i)
{
string sum;// Record product
int carry = 0;// Record carry
// When j = i when , explain j Here you are . Is the last multiplication , Unwanted +0
// When j-- after j It's on the tenth , Multiply the number in the tens by other numbers , Directly in the back +1 individual 0, And so on
for (int j = end2; j > i; --j)
{
sum.push_back(0);
}
//i Control is num2 Flashback every bit of traversal
int x2 = num2[i] - '0';
// The following is to use x2 * num1 every
for (int j = end1; j >= 0; --j)
{
int x1 = num1[j] - '0';
int ret = x1 * x2 + carry;// Multiply two numbers + carry
sum += ret % 10;//sum Save a bit , Tail insertion
carry = ret / 10;//carry Save ten
}
// When two numbers are multiplied Rounding and numbers , You need to Carry tail interpolation
while (carry != 0) {
sum += carry % 10;
carry /= 10;
}
// After tail insertion Flip strings
reverse(sum.begin(), sum.end());
// Convert a string into a numeric string
for (auto &e : sum) {
e += '0';
}
count = addStrings(count, sum);
}
return count;
}
};
🧸 Decoding code
The interpretation code has been written in the code comments !
make blind and disorderly conjectures
This problem is done 2 Hours , Read the explanation of the question , Understand the solution step by step , Then I tried to write , Half understood , I will do it again several times in the future
come on. I wish you get what you want offer!
边栏推荐
- 智慧党建: 穿越时空的信仰 | 7·1 献礼
- Photoshop plug-in HDR (II) - script development PS plug-in
- 【300+精选大厂面试题持续分享】大数据运维尖刀面试题专栏(三)
- ABAP-屏幕切换时,刷新上一个屏幕
- 二叉树的前序,中序,后续(非递归版本)
- Pico, can we save consumer VR?
- Redis seckill demo
- 你TM到底几点下班?!!!
- "Qt+pcl Chapter 6" point cloud registration ICP Series 6
- Summary of point cloud reconstruction methods I (pcl-cgal)
猜你喜欢

TensorFlow團隊:我們沒被拋弃

微信小程序02-轮播图实现与图片点击跳转

The latest NLP game practice summary!
Implementation of deploying redis sentry in k8s

6.2 normalization 6.2.6 BC normal form (BCNF) 6.2.9 normalization summary

华为发布HCSP-Solution-5G Security人才认证,助力5G安全人才生态建设

Recommendation of data acquisition tools and detailed graphic process of data acquisition list

ATSS:自动选择样本,消除Anchor based和Anchor free物体检测方法之间的差别
![[STM32 learning] w25qxx automatic judgment capacity detection based on STM32 USB storage device](/img/41/be7a295d869727e16528041ad08cd4.png)
[STM32 learning] w25qxx automatic judgment capacity detection based on STM32 USB storage device

AVL 平衡二叉搜索树
随机推荐
Automatic, intelligent and visual! Deeply convinced of the eight designs behind sslo scheme
[video memory optimization] deep learning video memory optimization method
如何写出好代码 - 防御式编程指南
#夏日挑战赛# HarmonyOS canvas实现时钟
跨平台应用开发进阶(二十四) :uni-app实现文件下载并保存
异常检测中的浅层模型与深度学习模型综述(A Unifying Review of Deep and Shallow Anomaly Detection)
有些能力,是工作中学不来的,看看这篇超过90%同行
[stm32-usb-msc problem help] stm32f411ceu6 (Weact) +w25q64+usb-msc flash uses SPI2 to read out only 520kb
MySQL advanced 4
S32K1xx 微控制器的硬件設計指南
Is JPMorgan futures safe to open an account? What is the account opening method of JPMorgan futures company?
Pico,能否拯救消费级VR?
SAP s/4hana: one code line, many choices
她就是那个「别人家的HR」|ONES 人物
雷神科技冲刺北交所,拟募集资金5.4亿元
The newly born robot dog can walk by himself after rolling for an hour. The latest achievement of Wu Enda's eldest disciple
Microservice tracking SQL (support Gorm query tracking under isto control)
SAP CRM organization Model(组织架构模型)自动决定的逻辑分析
STM32F411 SPI2输出错误,PB15无脉冲调试记录【最后发现PB15与PB14短路】
AVL 平衡二叉搜索树