# 43. Multiply Strings

{% embed url="<https://leetcode.com/problems/multiply-strings/>" %}

&#x20;数字长度最大可能到110位，不让直接 convert str into int，那就只能位操作了。思路和Q2的竖式加法有点共通，这边是用代码实现竖式乘法。

这个写法虽然submit了，但实现得也不是非常彻底，第14行本身就可以拓展写成一个Q2出来，这边偷懒了。

{% content-ref url="2.-add-two-numbers" %}
[2.-add-two-numbers](https://xuqiangwen1994.gitbook.io/practice/2.-add-two-numbers)
{% endcontent-ref %}

```python
class Solution:
    def multiply(self, num1: str, num2: str) -> str:
        res = 0
        for i in range(len(num1)-1, -1, -1):
            # 竖式这一层的结果 / 进位记录
            step, patch = '', 0
            for j in range(len(num2)-1, -1, -1):
                sumval = int(num1[i]) * int(num2[j]) + patch # 记得加上进位
                step += str(sumval%10)
                patch = sumval//10
            # 乘完了还有进位的话得再加进去
            if patch: step += str(patch) 
            # 每层都要多乘一个10
            res += int(step[::-1])*(10**(len(num1)-1-i))
        return str(res)
```
