当前位置:网站首页>【力扣】字符串相乘

【力扣】字符串相乘

2022-08-01 21:08:00 Patrick star`

43. 字符串相乘 - 力扣(LeetCode)

题目:

给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。

思路:

m位数*n位数的结果一定小于等于m+n位数

 

代码:

class Solution {
public:
    string multiply(string num1, string num2)
    {
        if (num1 =="0" ||num2=="0")
        {
            return "0";
        }
        int end1 = num1.size() - 1;
        int end2 = num2.size() - 1;
        int indexLen = end1 + end2 + 2;
        int* index = new int[indexLen];
        int end = indexLen-1;
        int cur = end;
        for (int i = 0; i <indexLen; i++)
        {
            index[i] = -1;
        }

        while (end2 >= 0)
        {
            cur = end;
            while (end1 >= 0)
            {
                
                int temp = (num2[end2] - '0') * (num1[end1] - '0');
                if (index[cur] == -1)
                {
                    index[cur] = temp;
                }
                else
                {
                    index[cur] += temp;

                }
                if (index[cur] > 9)
                {
                    int carry = index[cur] / 10;
                    index[cur] = index[cur]%10;
                    if (index[cur-1] == -1)
                    {
                        index[cur - 1] = carry;
                    }
                    else
                    {
                        index[cur - 1] += carry;
                    }
                }
                cur--;
                end1--;

            }
            end1 = num1.size() - 1;
            end2--;
            end--;
        }
        string ret;
        for (int i = 0; i < indexLen; i++)
        {
            if (index[i]!=-1)
            {
                ret += index[i] + '0';
            }
        }
        delete[] index;
        return ret;
    }
};

原网站

版权声明
本文为[Patrick star`]所创,转载请带上原文链接,感谢
https://blog.csdn.net/holle_world_ldx/article/details/126098354