当前位置:网站首页>Letcode43: string multiplication
Letcode43: string multiplication
2022-07-08 00:49:00 【New Young】
Preface :
subject
letcode:https://leetcode.cn/problems/multiply-strings/description/

Ideas

Code
// Ideas :
// Store the result of each multiplication in the array
// And
void reverseString(string& s) {
size_t i = 0;
size_t j = s.size() - 1;
for (; i < j; ++i, --j)
{
std::swap(s[i], s[j]);
}
}
void Sum(int* arr, int begin, const string& num, const char& ch)
{
// As a result, it is impossible to fill the array , This is an invisible explanation
// Because the starting data header of each array is different , So use begin Let's start
int gap = 0;// Carry device
int len = num.size();
int i = 0;
int j = len - 1;
while (i < len && j >= 0)
{
int sum = (num[j] - '0') * (ch - '0') + gap;
gap = sum / 10;
arr[begin - i] = sum % 10;
++i;
--j;
}
if (gap != 0)// The number of result digits is greater than len
{
arr[begin - i] = gap;
++i;
}
}
class Solution {
public:
string multiply(string num1, string num2) {
if ((strcmp(num1.c_str(), "0") == 0)
|| (strcmp(num2.c_str(), "0") == 0))
{
string s = "0";
return s;
}
size_t len1 = num1.size();
size_t len2 = num2.size();
size_t len = len1 + len2;
size_t min = len1;
if (len1 > len2)
{
min = len2;
}
// The number of arrays depends on the shortest length string
int** arr = new int* [min];
// The number of digits of the result of multiplying multiple numbers cannot be greater than the sum of digits of each number , Therefore, the length of each array is len1+len2;
for (size_t i = 0; i < min; ++i)
{
arr[i] = new int[len];
memset(arr[i], 0, sizeof(int) * (len));// The initialization space is 0
}
if (min == len2)
{
for (size_t i = 0; i < min; ++i)
{
Sum(arr[i], len - 1 - i, num1, num2[len2 -1- i]);
}
}
else
{
for (size_t i = 0; i < min; ++i)
{
Sum(arr[i], len - 1 - i, num2, num1[len1 - 1 - i]);
}
}
int gap = 0;// Carry device
int* tmp = new int[len];
memset(tmp, 0, sizeof(int) * (len));
for (int i = len - 1; i >= 0; --i)
{
int sum = gap;
for (int j = 0; j < min; ++j)
{
sum += arr[j][i];
}
gap = sum / 10;
tmp[i] = sum % 10;
}
int i = 0;
string s;
while (i < len)
{
if (tmp[i] != 0)
{
for (int j = i; j < len; ++j)
{
s += tmp[j] + '0';
}
break;
}
++i;
}
return s;
}
};
边栏推荐
- 基于微信小程序开发的我最在行的小游戏
- Is it safe to open an account on the official website of Huatai Securities?
- 手写一个模拟的ReentrantLock
- ABAP ALV LVC template
- German prime minister says Ukraine will not receive "NATO style" security guarantee
- C language 001: download, install, create the first C project and execute the first C language program of CodeBlocks
- My best game based on wechat applet development
- Zhou Hongqi, 52 ans, est - il encore jeune?
- 华泰证券官方网站开户安全吗?
- Reentrantlock fair lock source code Chapter 0
猜你喜欢

How to insert highlighted code blocks in WPS and word

Interface test advanced interface script use - apipost (pre / post execution script)

【GO记录】从零开始GO语言——用GO语言做一个示波器(一)GO语言基础

去了字节跳动,才知道年薪 40w 的测试工程师有这么多?

1293_ Implementation analysis of xtask resumeall() interface in FreeRTOS

Where is the big data open source project, one-stop fully automated full life cycle operation and maintenance steward Chengying (background)?

Langchao Yunxi distributed database tracing (II) -- source code analysis

Class head up rate detection based on face recognition
![[Yugong series] go teaching course 006 in July 2022 - automatic derivation of types and input and output](/img/79/f5cffe62d5d1e4a69b6143aef561d9.png)
[Yugong series] go teaching course 006 in July 2022 - automatic derivation of types and input and output

Qt添加资源文件,为QAction添加图标,建立信号槽函数并实现
随机推荐
[研发人员必备]paddle 如何制作自己的数据集,并显示。
Basic types of 100 questions for basic grammar of Niuke
Solution to the problem of unserialize3 in the advanced web area of the attack and defense world
The standby database has been delayed. Check that the MRP is wait_ for_ Log, apply after restarting MRP_ Log but wait again later_ for_ log
取消select的默认样式的向下箭头和设置select默认字样
SDNU_ ACM_ ICPC_ 2022_ Summer_ Practice(1~2)
韦东山第三期课程内容概要
[Yugong series] go teaching course 006 in July 2022 - automatic derivation of types and input and output
German prime minister says Ukraine will not receive "NATO style" security guarantee
接口测试进阶接口脚本使用—apipost(预/后执行脚本)
paddle入门-使用LeNet在MNIST实现图像分类方法一
[Yugong series] go teaching course 006 in July 2022 - automatic derivation of types and input and output
Cancel the down arrow of the default style of select and set the default word of select
新库上线 | CnOpenData中华老字号企业名录
C # generics and performance comparison
炒股开户怎么最方便,手机上开户安全吗
Leetcode brush questions
ReentrantLock 公平锁源码 第0篇
韦东山第二期课程内容概要
Su embedded training - day4