【字符串】Leetcode 43. 字符串相乘

news2024/11/15 12:04:34

题目讲解

43. 字符串相乘
在这里插入图片描述


算法讲解

class Solution {
public:
    void AddZero(string& temp, int cnt) {
    while (cnt--) {
        temp += '0';
    }
}

string Add(string num1, string num2) {
    string result;
    int carry = 0;

    int i = num1.size() - 1;
    int j = num2.size() - 1;

    while (i >= 0 || j >= 0 || carry > 0) {
        int sum = carry;
        if (i >= 0) {
            sum += num1[i] - '0';
            i--;
        }
        if (j >= 0) {
            sum += num2[j] - '0';
            j--;
        }

        carry = sum / 10;
        sum = sum % 10;
        result = to_string(sum) + result;
    }
    if (carry > 0) {
        result = std::to_string(carry) + result;
    }
    return result;
}

string multiply(string num1, string num2) {
    if(num1 == "0" || num2 == "0")return "0";
    int len1 = num1.size();
    int len2 = num2.size();
    // num1表示长的字符串
    if (len1 < len2)
        num1.swap(num2);
    string ret;
    // 字符串相乘
    for (int i = num2.size() - 1; i >= 0; i--) {
        int string_num = num2[i] - '0';
        int flag = 0;
        string temp;
        for (int j = num1.size() - 1; j >= 0; j--) {
            int sum = string_num * (num1[j] - '0') + flag;
            flag = sum / 10;
            sum %= 10;
            temp = to_string(sum) + temp;
        }
        // 计算最后一位的进位
        if (flag)
            temp = to_string(flag) + temp;
        // 处理末尾的0 和 相加
        AddZero(temp, num2.size() - 1 - i);
        ret = Add(ret, temp);
    }
    return ret;
}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1645839.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

制作微信在线答题步骤是什么

在信息爆炸的时代&#xff0c;学习不再只是书本和课堂的代名词。随着移动互联网的飞速发展&#xff0c;微信作为人们日常生活中不可或缺的沟通工具&#xff0c;也为我们提供了全新的学习平台。今天&#xff0c;就让我们一起探讨如何制作微信在线答题&#xff0c;让学习变得更加…

五种主流数据库:窗口函数

SQL 窗口函数为在线分析系统&#xff08;OLAP&#xff09;和商业智能&#xff08;BI&#xff09;提供了复杂分析和报表统计的功能&#xff0c;例如产品的累计销量统计、分类排名、同比/环比分析等。这些功能通常很难通过聚合函数和分组操作来实现。 本文比较了五种主流数据库实…

如何使用摇摆交易?fpmarkets实例讲解

各位投资者五一节后快乐&#xff01;祝愿投资者在接下来的日子里每次交易都以盈利结算。 五一节日也是劳动节&#xff0c;在这个特殊的日子里fpmarkets澳福和各位勤劳的投资者一起学习如何使用摇摆交易策略进行交易&#xff1f; 其实很简单&#xff0c;首先判断出买卖点&#x…

淡茶怎么泡?

很多人都知道喝浓茶对身体不好&#xff0c;但是怎么冲泡淡茶却一知半解。按照《品深淡茶冲泡标准》中对绿茶冲泡淡茶的规定&#xff0c;冲泡的茶汤中咖啡碱不得高于31.67mg/100mL&#xff0c;可可碱不得高于2.67mg/mL&#xff0c;茶碱不得高于1.50mg/100mL&#xff0c;茶多酚不…

无经验计科应届生前端面试遇到的问题整理

js数据类型有几种&#xff0c;分别是 原始数据类型&#xff08;Primitive data types&#xff09;: 字符串&#xff08;String&#xff09;: 用于表示文本数据&#xff0c;使用单引号&#xff08;‘’&#xff09;或双引号&#xff08;“”&#xff09;括起来。 数字&#xff…

高精地图是怎么构建的?方案有哪些?高精度语义地图构建的一点思考

高精地图是怎么构建的&#xff1f;方案有哪些&#xff1f;高精度语义地图构建的一点思考 高精度(High-Definition, HD)语义地图是目前自动驾驶领域的一个重要研究方向&#xff0c;近年随着Transformer和BEV的大火&#xff0c;很多大佬团队都开展了HD语义地图构建相关的工作。2…

企业邮箱是什么样子的?怎么弄一个企业邮箱

企业邮箱是什么样子的&#xff1f;企业使用的电子邮箱有特征&#xff1f;其实&#xff0c;企业邮箱的主要特征就在于电子邮箱域名的个性化&#xff0c;以及可扩展性的功能&#xff0c;在使用企业邮箱时能够提升公司的品牌形象。今天小编和大家仔细来聊聊。 一、企业邮箱是什么…

初识指针(2)<C语言>

前言 前文介绍完了一些指针基本概念&#xff0c;下面介绍一下&#xff0c;const关键字、指针的运算、野指针的成因以及避免&#xff0c;assert函数等。 目录 const&#xff08;常属性&#xff09; 变量的常属性 指针的常属性 指针的运算 ①指针 -整数 ②指针-指针 ③指针与…

智慧工地)智慧工地标准化方案(107页)

2.2 设计思路 对于某某智慧工地管理系统的建设&#xff0c;绝不是对各个子系统进行简单堆砌&#xff0c;而是在满足各子系统功能的基础上&#xff0c;寻求内部各子系统之间、与外部其它智能化系统之间的完美结合。系统主要依托于智慧工地管理平台&#xff0c;来实现对众多子系统…

武汉星起航:助力客户在亚马逊平台顺利入驻,实现跨境电商新飞跃

在全球化浪潮的推动下&#xff0c;跨境电商行业迎来了前所未有的发展机遇。作为全球电商巨头&#xff0c;亚马逊以其独特的平台属性和消费群体较高的消费能力&#xff0c;吸引了众多中国卖家的目光。武汉星起航电子商务有限公司凭借其专业的运营团队和丰富的行业经验&#xff0…

软件测试与管理-白盒测试-逻辑覆盖法例题

目录 知识点&#xff1a; 例题 &#xff1a; 知识点&#xff1a; 语句覆盖&#xff1a;设计足够多的测试用例&#xff0c;使得被测试程序中的“ 每条可执行语句至少被执行一次” 优点&#xff1a;可通过源码观察直观地得到测试用例&#xff0c;无须细分每个判定表达式。缺点&am…

韧性增长与库存挑战并存,白酒行业上演“冰与火之歌”?

随着近日五粮液成绩单的公布&#xff0c;白酒板块主要上市公司的业绩均已出炉。 整体来看&#xff0c;虽然2023年白酒行业仍处于深度结构性调整&#xff0c;但相关上市公司业绩似乎并未受过多影响&#xff0c;均表现出喜人的增长态势&#xff0c;这也带动了白酒股的上行。据悉…

轻松上手的LangChain学习说明书

一、Langchain是什么&#xff1f; 如今各类AI模型层出不穷&#xff0c;百花齐放&#xff0c;大佬们开发的速度永远遥遥领先于学习者的学习速度。。为了解放生产力&#xff0c;不让应用层开发人员受限于各语言模型的生产部署中…LangChain横空出世界。 Langchain可以说是现阶段…

MySQL数据库—DQL查询语句(一篇教会你快速找到想要的数据)

目录 ▐ 特定列查询 ▐ 逻辑处理 ▐ 字符函数操作 ▐ 分组函数统计 ▐ 数学函数 ▐ 日期函数 ▐ 条件查询 ▐ 排序 ▐ 数量限制 ▐ 合并 ▐ 分组查询 ▐ 前言&#xff1a; • DQL全称 Data Query Language 数据查询语言 • 可以从一个表中查询数据&#xff0c;也…

数据库大作业——基于qt开发的图书管理系统(二) 相关表结构的设计

前言 在上一篇文章中。我们完成了Qt环境的安装&#xff0c;同时完成了有关项目需求的分析并绘制了整体的项目架构图&#xff0c;而在图书管理系统中&#xff0c;其实我们主要完成的就是对数据的增删改查&#xff0c;并将这些功能通过信号与槽机制和可视化界面绑定在一起&#…

Fluent 区域交界面的热边界条件

多个实体域公共交界面的壁面&#xff0c;Fluent 会分拆为 wall 和 wall-shadow 的两个壁面&#xff0c;两者为配对关系&#xff0c;分别从属于一个实体域。 配对面可使用热通量、温度、耦合三类热边界条件&#xff0c;前两者统称为非耦合热边界条件。 耦合为配对面默认的热边界…

迭代器解释(C++)

一、什么是迭代器 为了提高C编程的效率&#xff0c;STL&#xff08;Standard Template Library&#xff09;中提供了许多容器&#xff0c;包括vector、list、map、set等。然而有些容器&#xff08;vector&#xff09;可以通过下标索引的方式访问容器里面的数据&#xff0c;但是…

TypeError报错处理

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 一、Python中的TypeError简介 这个错误通常表示在方法调用时&#xff0c;参数类型不正确&#xff0c;或者在对字符串进行格式化操作时&#xff0c;提供的变量与预期不符。 二、错误的源头&#xff1a;字符串格式化…

select,poll,epoll

在 Linux Socket 服务器短编程时&#xff0c;为了处理大量客户的连接请求&#xff0c;需要使用非阻塞I/O和复用&#xff0c;select&#xff0c;poll 和 epoll 是 Linux API 提供的I/O复用方式。 \selectpollepoll操作方式遍历遍历回调底层实现数组链表哈希表IO效率每次调用都进…

数据结构——链表专题1

文章目录 一、移除链表元素二、反转链表三、合并两个有序链表四、链表的中间节点五、环形链表的约瑟夫问题六、分割链表 一、移除链表元素 原题链接&#xff1a;移除链表元素 一个解法是遍历原链表&#xff0c;将与val相等的结点抛弃&#xff0c;链接后一个结点 另一个解法是…