假设我们有两个数字作为字符串。我们必须将它们相乘,并以字符串形式返回结果。因此,如果数字分别是“ 28”和“ 25”,则结果将是“ 700”
为了解决这个问题,我们将遵循以下步骤-
取两个参数x和y表示x除以y
如果x <−Infinity并且y = 1,则返回无穷大
a:= | x |,b:= | y | 和ans:= 0
而a − b> = 0
p:= p + 1
p:= 0
而a-(左移b(左移1 p次))> = 0
a:= a −(左移b,p次)
ans:= ans +左移1 p次
如果x> 0为真且y> 0也为真,则返回ans,否则返回(-ans)
让我们看下面的实现以更好地理解-
#include <bits/stdc++.h> using namespace std; class Solution { public: string multiply(string num1, string num2); }; string Solution::multiply(string nums1, string nums2) { int n = nums1.size(); int m = nums2.size(); string ans(n + m, '0'); for(int i = n - 1; i>=0; i−−){ for(int j = m - 1; j >= 0; j−−){ int p = (nums1[i] − '0') * (nums2[j] − '0') + (ans[i + j + 1] − '0'); ans[i+j+1] = p % 10 + '0'; ans[i+j] += p / 10 ; } } for(int i = 0; i < m + n; i++){ if(ans[i] !='0')return ans.substr(i); } return "0"; } main(){ Solution ob; cout << ob.multiply("28", "25"); }
"28", "25"
输出结果
"700"