Leetcode典型题解答和分析、归纳和汇总——T43(字符串相乘)

题目描述:

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

说明:

    题目解析:

注意本题不能够直接使用strtoint的整型数转换函数。 而且本题就是一个简单的数学乘法的考察,需要对数学知识有较强的理解能力。

本题我们采用优化竖式计算的方式来求解,具体参考优化竖式

                                具体的代码参考如下:

class Solution{
    public:
    string multiply(string num1, string num2){
        int len1 = num1.size(), len2=num2.size();
        string res(len1+len2,'0'); //用来保存乘法结果
        for(int i=len2-1;i>=0;i--)
        {
            for(int j=len1-1;j>=0;j--)//注意都是从最高位进行计算求解的
            {
                int tmp=(res[i+j+1]-'0')+(num1[j]-'0')*(num2[i]-'0');
                res[i+j+1] = tmp%10+'0';
                res[i+j] += tmp/10; 
            }    
        }

        for(int i=0;i<len1+len2;i++){
            if(res[i]!='0')
            {
                return res.substr(i);  //表示剪切剩余字符串的长度(从i这个位置以后开始)
            }
        }
        return "0";
    }
        
};

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

发布了56 篇原创文章 · 获赞 7 · 访问量 4475

猜你喜欢

转载自blog.csdn.net/weixin_44504987/article/details/104373309