P43 字符串相乘

字符串相乘

这道题,我本来想直接换算成long long 乘出来,但是复杂度有点高并且,感觉会爆longlong ,可能是高精度的题型

我是按照,正常我们计算大数字相乘所用到的竖式,模拟各个进位来计算的,一道高精度的题型

Screenshot 2025-10-19 205846.png

题目不是很难,但是要想的地方比较多。

Screenshot 2025-10-19 212028.png

我当时也想了半天,主要是怎么去除前导0 ,因为我是写java的所以c++的一些库不是很常用。(⊙o⊙) !

class Solution {
public:
    string multiply(string num1, string num2) {
        int n = num1.size();
        int m = num2.size();
        if(num1 == "0" || num2 == "0"){
            return "0";
        }
        vector<int> ans(n + m);
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                int a = num1[n-i-1] - '0';
                int b = num2[m-j-1] - '0';
                ans[i+j] += a * b;
            }
        }   
        string s;
        for(int i=0 ,carry = 0;i < ans.size();i++){
            ans[i] += carry;
            carry = ans[i] / 10;
            ans[i] %= 10;
            char a = ans[i] + '0';
            s = a + s;
        }
        for(int i=0;i<s.size();i++){
            if(s[i] != '0'){
                s = s.substr(i);
                break;
            }
        }
        return s;
    }
};

明天见 Bye ~

迷茫java练习生