很簡單的題目,模擬大數乘法。
思路:
第一個字符串的第i位乘以第二個字符串的第j位一定是結果的第i+j位,如果i+j已經有值,直接加上去就OK,並用temp保存進位,
最後記得將結果反轉,去掉前置0。這樣的算法的復雜度是O(n2).利用FFT可以將算法優化到O(nlogn),關於FFT的實現在此不再贅述,可以參考算法導論或者網上其他資料。
另外,我的博客中實現了關於大數加減乘除的詳細代碼,請參考我的 博客鏈接:
class Solution { public: string multiply(string num1, string num2) { string s(1000,'0'); reverse(num1.begin(),num1.end()); reverse(num2.begin(),num2.end()); for(int i=0;i