兩個非負整數以字符串形式給出(長度任意),返回它們的乘積字符串。不允許使用內置大整數庫(Java 除外,可用 BigInteger)。
m 位數 × n 位數,結果最多 m+n 位。結果第 k 位(從低位 0 開始)由所有 i+j=k 的 num1[i]*num2[j] 累加得到。
算法:反轉兩字符串(低位在前),雙重循環累加到 res[i+j],最後處理進位,再反轉回正序。
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;
}
};