• 【力扣 024】43. 字符串相乘


     43. 字符串相乘

    给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。

    注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数。

     

    示例 1:

    输入: num1 = "2", num2 = "3"
    输出: "6"

    示例 2:

    输入: num1 = "123", num2 = "456"
    输出: "56088"

     提示:

        1 <= num1.length, num2.length <= 200
        num1 和 num2 只能由数字组成。
        num1 和 num2 都不包含任何前导零,除了数字0本身。

    来源:力扣(LeetCode)
    链接:https://leetcode.cn/problems/multiply-strings
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    计算过程:

    动画实现:

    代码实现:

    #include <iostream>
    #include <string>
    #include <vector>
    using namespace std;
    
    class Solution
    {
    public:
      string multiply(string num1, string num2)
      {
        string res;
        int m = num1.size(), n = num2.size();
        vector<int> vals(m + n);
        for (int i = m - 1; i >= 0; --i)
        {
          for (int j = n - 1; j >= 0; --j)
          {
            int mul = (num1[i] - '0') * (num2[j] - '0');
            int p1 = i + j, p2 = i + j + 1, sum = mul + vals[p2];
            vals[p1] += sum / 10;
            vals[p2] = sum % 10;
          }
        }
        for (int val : vals)
        {
          if (!res.empty() || val != 0)
            res.push_back(val + '0');
        }
        return res.empty() ? "0" : res;
      }
    };
    
    int main()
    {
      string num1, num2;
      cin >> num1 >> num2;
    
      Solution s;
      cout << "res: " << s.multiply(num1, num2) << endl;
    }

    参考资料

    1. 字符串乘法

  • 相关阅读:
    前言
    echarts踩坑---容器高度自适应
    vue中刷新页面时去闪烁,提升体验方法
    2018.11.7
    07-sel-express 框架快速搭建案例
    第三方包 vue-resource
    zepto.js-定制zepto步骤
    CSS-单位em 和 rem
    ES6-个人学习大纲
    响应式布局
  • 原文地址:https://www.cnblogs.com/sunbines/p/16282431.html
Copyright © 2020-2023  润新知