首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

LeetCode 43 Multiply Strings:大數相乘的模擬列豎乘法

     編輯:關於C++

題目大意

兩個非負整數以字符串形式給出(長度任意),返回它們的乘積字符串。不允許使用內置大整數庫(Java 除外,可用 BigInteger)。

模擬列豎乘法

m 位數 × n 位數,結果最多 m+n 位。結果第 k 位(從低位 0 開始)由所有 i+j=k 的 num1[i]*num2[j] 累加得到。
算法:反轉兩字符串(低位在前),雙重循環累加到 res[i+j],最後處理進位,再反轉回正序。

C++ 實現

 res(n+m, 0);
        reverse(num1.begin(), num1.end());
        reverse(num2.begin(), num2.end());
        for (int i=0; i0 && res[i]==0) --i;
        string ans;
        for (; i>=0; --i) ans.push_back('0'+res[i]);
        return ans;
    }
};

Java 版(可用 BigInteger)

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved