43. 字符串相乘

 1 //"12" * "34" 
 2 //      1 2
 3 //     *3 4
 4 //    ————————
 5 //      4 8
 6 //    3 6
 7 //    ———————— 
 8 //    4 0 8
 9 // ***注意第二个字符串在第一层循环***
10 
11 class Solution 
12 {
13 public:
14     string multiply(string num1, string num2) 
15     {
16         int n1=num1.size();
17         int n2=num2.size();
18         string res(n1+n2,'0');
19 
20         for(int i=n2-1;i>=0;i--)
21         {
22             for(int j=n1-1;j>=0;j--)
23             {
24                 int temp=(res[i+j+1]-'0')+(num1[j]-'0')*(num2[i]-'0');
25                 res[i+j+1]=temp%10+'0';//当前位
26                 res[i+j]+=temp/10; //前一位加上进位,res[i+j]已经初始化为'0',加上int类型自动转化为char,所以此处不加'0'
27             }
28         }
29         
30         //去除首位'0'
31         for(int i=0;i<n1+n2;i++)
32         {
33             if(res[i]!='0')
34                 return res.substr(i);
35         }
36         return "0";
37     }
38 };

 

posted @ 2020-03-18 16:43  Jinxiaobo0509  阅读(127)  评论(0)    收藏  举报