LeetCode-43-字符串相乘
#include<iostream>
#include<string>
using namespace std;
char s1[111], s2[111];
int ans[100] = { 0 };
int main(){
cin >> s1 >> s2;
int len1 = strlen(s1);
int len2 = strlen(s2);
int size = 0;
//翻转字符串
int left = 0, right = len1 - 1;
while (left <= right){
char t = s1[left];
s1[left] = s1[right];
s1[right] = t;
left++;
right--;
}
left = 0;
right = len2 - 1;
while (left <= right){
char t = s2[left];
s2[left] = s2[right];
s2[right] = t;
left++;
right--;
}
//求每个位数的乘积
for (int i = 0; i < len1; i++){
for (int j = 0; j < len2; j++){
ans[i + j] += (s1[i] - '0')*(s2[j] - '0');//注意求乘公式
size++;
}
}
//求进位
int carry = 0;//进位
for (int i = 0; i < size; i++){
ans[i] = ans[i] + carry;
carry = ans[i] / 10;
ans[i] = ans[i] % 10;
}
if (ans[size] != 0){
size++;
}
//输出结果
int flag = 0;
for (int i = size - 1; i >= 0; i--){
while (flag==0&&ans[i] == 0){//消除前面的0
i--;
}
flag = 1;
cout << ans[i];
}
cout << endl;
return 0;
}