当前位置:网站首页>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;
}
};
边栏推荐
- Installation and configuration of sublime Text3
- QT establish signal slots between different classes and transfer parameters
- 深潜Kotlin协程(二十三 完结篇):SharedFlow 和 StateFlow
- 51 communicates with the Bluetooth module, and 51 drives the Bluetooth app to light up
- Hotel
- “一个优秀程序员可抵五个普通程序员”,差距就在这7个关键点
- 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
- 5g NR system messages
猜你喜欢

Class head up rate detection based on face recognition

备库一直有延迟,查看mrp为wait_for_log,重启mrp后为apply_log但过一会又wait_for_log

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

第一讲:链表中环的入口结点

基于微信小程序开发的我最在行的小游戏

3年经验,面试测试岗20K都拿不到了吗?这么坑?

ReentrantLock 公平锁源码 第0篇

Service Mesh介绍,Istio概述

fabulous! How does idea open multiple projects in a single window?

letcode43:字符串相乘
随机推荐
Summary of the third course of weidongshan
【笔记】常见组合滤波电路
基于微信小程序开发的我最在行的小游戏
Cause analysis and solution of too laggy page of [test interview questions]
Play sonar
服务器防御DDOS的方法,杭州高防IP段103.219.39.x
Vscode software
Sqlite数据库存储目录结构邻接表的实现2-目录树的构建
QT establish signal slots between different classes and transfer parameters
Huawei switch s5735s-l24t4s-qa2 cannot be remotely accessed by telnet
Reentrantlock fair lock source code Chapter 0
股票开户免费办理佣金最低的券商,手机上开户安全吗
ThinkPHP kernel work order system source code commercial open source version multi user + multi customer service + SMS + email notification
A brief history of information by James Gleick
DNS series (I): why does the updated DNS record not take effect?
Course of causality, taught by Jonas Peters, University of Copenhagen
What has happened from server to cloud hosting?
C language 001: download, install, create the first C project and execute the first C language program of CodeBlocks
What if the testing process is not perfect and the development is not active?
redis你到底懂不懂之list