【second】Multiply Strings

注意边界条件即可:num1表示0或者num2表示0;

    string multiply(string num1, string num2) {
        // Note: The Solution object is instantiated only once and is reused by each test case.
        if(num1.empty()||num2.empty())
            return "";
        if(num1[0]=='0'||num2[0]=='0') //ATT here
            return "0";
            
        int m = num1.size();
        int n = num2.size();
        
        vector<int> num(m+n-1,0);
        for(int i=0;i<m;i++)
            for(int j=0;j<n;j++)
                num[i+j] += ((num1[i]-'0')*(num2[j]-'0'));
        
        string res("");
        int carry = 0;
        for(int i=m+n-2;i>=0;i--)
        {
            res+=((num[i]+carry)%10+'0');
            carry = (num[i]+carry)/10;
        }
        
        if(carry!=0)
            res+=(carry+'0');
        
        return string(res.rbegin(),res.rend());
        
    }

  

posted @ 2013-10-21 22:52  summer_zhou  阅读(117)  评论(0编辑  收藏  举报