LeetCode 43. Multiply Strings

来源:互联网 发布:百度域名劫持事件 编辑:程序博客网 时间:2024/06/07 22:35
Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and num2.Note:The length of both num1 and num2 is < 110.Both num1 and num2 contains only digits 0-9.Both num1 and num2 does not contain any leading zero.You must not use any built-in BigInteger library or convert the inputs to integer directly

思路:
这里写图片描述

由上图可以看到对于某个数的num[i]*num[j]的值(看成两位数),其个位位于乘积的i+j+1的位置,十位位于i+j的位置。那么只要把两个乘数的每一位相乘,并把其结果结算到相应的位置,就可以得出结果。代码如下:

class Solution {public:    string multiply(string num1, string num2) {        int l1=num1.size();        int l2=num2.size();        vector<int> res(l1+l2,0);        for(int i=l1-1;i>=0;i--){            for(int j=l2-1;j>=0;j--){                int mul=(num1[i]-'0')*(num2[j]-'0');                int p1=i+j,p2=i+j+1;                int sum=mul+res[p2];                res[p1]+=sum/10;                res[p2]=sum%10;            }        }        string s;        int index=0;        for(int i=0;i<res.size();i++){            if(res[i]==0){                index++;                continue;            }            break;        }        for(int i=index;i<res.size();i++){            s+=to_string(res[i]);        }        return s.size()==0?"0":s;    }};
原创粉丝点击