【笔试强训_Day06】

文章目录

1.字符串相乘

题目链接

  • 解题思路:

高精度乘法,注意要学会下面这种列式相乘的形式🍎

注意细节❗:🍎 首先把列式相乘的数据都存放到数组中去, 然后再对数组中的数据进行取余进位 操作。

②🐟 要注意处理前导 0 的情况。

③🐟 注意当只有一位数字 0 的时候。

  • 实现代码:
cpp 复制代码
class Solution {
public:
    string multiply(string num1, string num2) {

        if (num1.size() == 1 && num1[0] == '0') return "0";
        if (num2.size() == 1 && num2[0] == '0') return "0";

        reverse(num1.begin(), num1.end());
        reverse(num2.begin(), num2.end());

        int n = num1.size(), m = num2.size();

        // 把每个位数先乘出来然后存放到这个数组中
        vector<int> num(n + m);
        for (int i = 0; i < m; i++)
        {
            for (int j = 0; j < n; j++)
                num[i + j] += (num1[j] - '0') * (num2[i] - '0');
        }

        // 处理进位
        string res = "";
        int t = 0;  // t 表示进位
        for (auto& x : num)
        {
            res += ((x + t) % 10 + '0');
            t = (x + t) / 10;
        }

        // 最后一个进位还没有处理
        while (t > 0)
        {
            res += t % 10 + '0';
            t /= 10;
        }

        // 去掉前导 0 
        while (res.back() == '0')
            res.pop_back();

        reverse(res.begin(), res.end());

        return res;
    }
};
相关推荐
ShiinaMashirol4 小时前
代码随想录打卡|Day27(合并区间、单调递增的数字、监控二叉树)
java·算法
wuqingshun3141596 小时前
蓝桥杯 5. 交换瓶子
数据结构·c++·算法·职场和发展·蓝桥杯
Demons_kirit6 小时前
Leetcode 2845 题解
算法·leetcode·职场和发展
adam_life7 小时前
http://noi.openjudge.cn/——2.5基本算法之搜索——200:Solitaire
算法·宽搜·布局唯一码
我想进大厂7 小时前
图论---朴素Prim(稠密图)
数据结构·c++·算法·图论
我想进大厂7 小时前
图论---Bellman-Ford算法
数据结构·c++·算法·图论
AIGC大时代7 小时前
高效使用DeepSeek对“情境+ 对象 +问题“型课题进行开题!
数据库·人工智能·算法·aigc·智能写作·deepseek
CODE_RabbitV8 小时前
【深度强化学习 DRL 快速实践】近端策略优化 (PPO)
算法
Wendy_robot9 小时前
【滑动窗口+哈希表/数组记录】Leetcode 438. 找到字符串中所有字母异位词
c++·算法·leetcode
程序员-King.9 小时前
day49—双指针+贪心—验证回文串(LeetCode-680)
算法·leetcode·贪心算法·双指针