【每日一题】力扣 43题 字符串相乘
给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。
示例 1:
输入: num1 = "2", num2 = "3" 输出: "6"
示例 2:
输入: num1 = "123", num2 = "456" 输出: "56088"
说明:
num1和num2的长度小于110。num1和num2只包含数字0-9。num1和num2均不以零开头,除非是数字 0 本身。- 不能使用任何标准库的大数类型(比如 BigInteger)或直接将输入转换为整数来处理。
思路 :大数相乘 先不进位相乘,把每次乘的数的放在一个数组里,然后在判断是否进位
class Solution { public: string multiply(string num1, string num2) { int len1 = num1.length(); int len2 = num2.length(); int len = len1 + len2; int a[len]; memset(a,0,sizeof(a));//全初始化为0; string str = "";
for(int i = 0;i < len1;i ++){ for(int j = 0;j < len2;j ++){ a[i + j + 1] += (num1[i] - '0' )*( num2[j] - '0'); } }
for(int i = len - 1;i > 0;i--) { //进位操作 逆序 a[i-1] += a[i] / 10; a[i] %= 10; }
int flag = 0; for(int i = 0;i < len;i++){ if(a[i] != 0||flag){//处理前缀0; str += (char)(a[i] + '0'); flag = 1; } } if(!flag){ return "0"; } return str; } };
-------------------------------------------
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

浙公网安备 33010602011771号