代码改变世界

Multiply Strings

2015-03-31 16:10  笨笨的老兔子  阅读(143)  评论(0编辑  收藏  举报

字符串的大数乘法,模拟题

把两个字符串倒过来以后对应位置相乘,注意最终结果要去掉最前面的0

  1. class Solution {
  2. public:
  3. string multiply(string num1, string num2) {
  4. reverse(num1.begin(), num1.end());
  5. reverse(num2.begin(), num2.end());
  6. string s(num1.size() + num2.size(), '0');
  7. for (size_t i = 0; i < num1.size(); i++)
  8. {
  9. for (size_t j = 0; j < num2.size(); j++)
  10. {
  11. s[i + j] = s[i + j] - '0' + (num2[j] - '0')*(num1[i] - '0');
  12. s[i + j + 1] = s[i + j + 1] + s[i + j] / 10;
  13. s[i + j] = s[i + j] % 10 + '0';
  14. }
  15. }
  16. int notZeroIndex = s.size() - 1;
  17. while (s[notZeroIndex] == '0' && notZeroIndex>0)
  18. {
  19. notZeroIndex--;
  20. }
  21. s = s.substr(0, notZeroIndex + 1);
  22. reverse(s.begin(), s.end());
  23. return s;
  24. }
  25. };