Trong chương trình này, chúng ta sẽ nhân hai chuỗi trong C++. Chúng tôi sẽ không sử dụng bất kỳ chức năng tích hợp nào để chuyển đổi một chuỗi thành một số nguyên
Điều kiện tiên quyết
- vòng lặp
- thêm chuỗi
đầu ra
Đầu vào. num1 = “80”, num2 = “2”
Đầu ra. “160”
Nhân chuỗi trong C++
Trong chương trình này, chúng tôi đã thực hiện phép nhân đơn giản của hai chuỗi. Chúng tôi chọn ký tự cuối cùng của số thứ hai và nhân nó với mỗi ký tự của số đầu tiên và đẩy kết quả phép nhân đó vào một vectơ tổng. Sau đó, chúng tôi thực hiện phép cộng tất cả các chuỗi trong vectơ tổng
#include
using namespace std;
class Solution
{
public:
string addStrings[string &num1, string &num2]
{
int n = num1.size[] - 1;
int m = num2.size[] - 1;
string s;
int carry = 0;
int x1, x2, value;
while [n >= 0 || m >= 0]
{
if [n >= 0]
{
x1 = num1[n] - '0';
}
else
x1 = 0;
if [m >= 0]
{
x2 = num2[m] - '0';
}
else
x2 = 0;
value = [x1 + x2 + carry] % 10;
carry = [x1 + x2 + carry] / 10;
s.push_back[value + '0'];
n--;
m--;
}
if [carry != 0]
s.push_back[carry + '0'];
reverse[s.begin[], s.end[]];
return s;
}
string multiply[string num1, string num2]
{
vector sum;
int m = num2.size[] - 1;
int last = 0;
while [m >= 0]
{
string s;
int carry = 0;
int x1, x2, value;
int n = num1.size[] - 1;
while [n >= 0]
{
x1=num1[n]-'0';
x2=num2[m]-'0';
value = [x1 * x2 + carry] % 10;
carry = [x1 * x2 + carry] / 10;
s.push_back[value + '0'];
n--;
}
if [carry != 0]
s.push_back[carry + '0'];
reverse[s.begin[], s.end[]];
int temp = last;
while [temp--]
s.push_back['0'];
last++;
sum.push_back[s];
m--;
}
string ans = "0";
for [auto str : sum]
{
ans = addStrings[ans, str];
}
if [ans[0] == '0']
{
int i = 1;
while [i < ans.size[] && ans[i] == '0']
{
ans.erase[ans.begin[] + i];
// i++;
}
}
return ans;
}
};
int main[]
{
Solution s;
string str1,str2;
coutstr1;
coutstr2;
cout