【LeetCode】43. Multiply Strings 大数相乘算法
发布时间:2020-12-14 01:56:32 所属栏目:大数据 来源:网络整理
导读:题目要求:Given two numbers represented as strings,return multiplication of the numbers as a string. Note: The numbers can be arbitrarily large and are non-negative. 题目链接:leetCode 我的思路 两个数相乘的时候,最后得到的积位数绝对不会超
题目要求:Given two numbers represented as strings,return multiplication of the numbers as a string. 我的思路
代码代码是C++的: class Solution
{
public:
string multiply(string num1,string num2)
{
int num1_size = num1.size();
int num2_size = num2.size();
//注意,这个并不是一定就是两个相加这么长的位数
int result_size = num1_size + num2_size;
int result[result_size] = {0};
int num1_array[num1_size] = {0};
int num2_array[num2_size] = {0};
for( int i=0; i<num1_size; i++)
{
num1_array[i] = num1[i] - '0';
}
for( int i=0; i<num2_size; i++)
{
num2_array[i] = num2[i] - '0';
}
for(int i=0; i<num1_size; i++)
{
for(int j=0; j<num2_size; j++)
{
result[i+j+1] = result[i+j+1] + num1_array[i]*num2_array[j];
}
}
for(int i=result_size-1; i>=0; i--)
{
int temp1 = result[i]%10;
int temp2 = (result[i]-temp1)/10;
result[i-1] = result[i-1] + temp2;
result[i] = temp1;
}
bool flag = true;
string s = "";
for(int i=0; i<result_size; i++)
{
if(flag && result[i]==0 && i!=result_size-1)
{
continue;
}
else
{
flag = false;
}
char temp_char = '0' + result[i];
s.append(1,temp_char);
}
return s;
}
};
运算效率结果截图(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |