当前位置:网站首页>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;
}
};
边栏推荐
- Cascade-LSTM: A Tree-Structured Neural Classifier for Detecting Misinformation Cascades(KDD20)
- Development of a horse tourism website (realization of login, registration and exit function)
- CVE-2022-28346:Django SQL注入漏洞
- Qt添加资源文件,为QAction添加图标,建立信号槽函数并实现
- Class head up rate detection based on face recognition
- 服务器防御DDOS的方法,杭州高防IP段103.219.39.x
- tourist的NTT模板
- 【愚公系列】2022年7月 Go教学课程 006-自动推导类型和输入输出
- Handwriting a simulated reentrantlock
- Kubernetes Static Pod (静态Pod)
猜你喜欢
Jouer sonar
How to insert highlighted code blocks in WPS and word
FOFA-攻防挑战记录
【测试面试题】页面很卡的原因分析及解决方案
They gathered at the 2022 ecug con just for "China's technological power"
What if the testing process is not perfect and the development is not active?
搭建ADG过程中复制报错 RMAN-03009 ORA-03113
Interface test advanced interface script use - apipost (pre / post execution script)
The underlying principles and templates of new and delete
v-for遍历元素样式失效
随机推荐
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
【愚公系列】2022年7月 Go教学课程 006-自动推导类型和输入输出
备库一直有延迟,查看mrp为wait_for_log,重启mrp后为apply_log但过一会又wait_for_log
Kubernetes Static Pod (静态Pod)
接口测试要测试什么?
ABAP ALV LVC template
手写一个模拟的ReentrantLock
接口测试进阶接口脚本使用—apipost(预/后执行脚本)
[Yugong series] go teaching course 006 in July 2022 - automatic derivation of types and input and output
My best game based on wechat applet development
韦东山第二期课程内容概要
Course of causality, taught by Jonas Peters, University of Copenhagen
redis你到底懂不懂之list
哪个券商公司开户佣金低又安全,又靠谱
【愚公系列】2022年7月 Go教学课程 006-自动推导类型和输入输出
What is load balancing? How does DNS achieve load balancing?
DNS 系列(一):为什么更新了 DNS 记录不生效?
从Starfish OS持续对SFO的通缩消耗,长远看SFO的价值
What if the testing process is not perfect and the development is not active?
German prime minister says Ukraine will not receive "NATO style" security guarantee