LeetCode —— 43. 字符串相乘

在这里插入图片描述
请添加图片描述

😶‍🌫️😶‍🌫️😶‍🌫️😶‍🌫️Take your time ! 😶‍🌫️😶‍🌫️😶‍🌫️😶‍🌫️
💥个人主页:🔥🔥🔥大魔王🔥🔥🔥
💥所属专栏:🔥魔王的修炼之路–C++🔥
如果你觉得这篇文章对你有帮助,请在文章结尾处留下你的点赞👍和关注💖,支持一下博主。同时记得收藏✨这篇文章,方便以后重新阅读。

43. 字符串相乘

这个相当于是字符串相加的进阶版,需要用到字符串相加实现的内容。

几个月前做过一遍都做了好几个小时,这次又做有用了好几个小时
之前的思路是每次用完数据pop,这次的实现是通过对迭代器的控制
花了三四个小时,无语了,总结出来就两个大问题:

  1. 对于任何情况的位数0都不应该在转换为int时去管,因为整形的存储空间就那么大,但是字符串可以无限大,所以就算不算数据部分,对于比较长的字符串最后也会把整型给撑爆,long long也不行,解决方法就是先将这一次要加的0记起来然后等要计算这次字符串相加时也就是把整型转换为了字符串时再补上这一次的0.
  2. 不能先将其中一个字符串转换为整型然后只用一层for循环对另一个字符串的数据进行遍历相加,就算是long long也接收不了每次这么大的整型,必须用两层for循环分别让两个数的每位相乘完立即相加到字符串上。

给定两个以字符串形式表示的非负整数 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本身。

class add {
public:string addStrings(string num1, string num2) {string s;int n1 = 0, n2 = 0;int flag = 0;int sum = 0;if (num1.size() == 0)return num2;else if (num2.size() == 0)return num1;string::iterator cur1 = num1.end() - 1;string::iterator cur2 = num2.end() - 1;while (cur1 >= num1.begin() || cur2 >= num2.begin()){n1 = cur1 >= num1.begin() ? *cur1 - '0' : 0;n2 = cur2 >= num2.begin() ? *cur2 - '0' : 0;//等到越界的时候也没事,因为三目操作符会选择性执行,只会去比那块的地址,不会访问进去。sum = n1 + n2 + flag;flag = 0;if (sum > 9){flag = 1;sum -= 10;}s += sum + '0';cur1--;cur2--;}if (flag)s += 1 + '0';reverse(s.begin(), s.end());return s;}
};class Solution {
public:string multiply(string num1, string num2) {if (num1 == string("0") || num2 == "0")return string("0");string s;long long num1_tmp = 0;long long num2_tmp = 0;//不能一下子让num1变为整数,因为就算是long long 也存不下,所以要套两层循环,让它们每个位都相乘// for (auto x : num1)// {//     cout << (x - '0') << ' ';//     s_num1 += (x - '0') * pow(10, num1.size() - 1 - system++);//     cout << s_num1 << endl;// }// cout << s_num1 << endl;int system1 = 0;int system2 = 0;string::iterator it1 = num1.end() - 1;while(it1 >= num1.begin()){system2 = 0;string product_s;num1_tmp = *it1 - '0';string::iterator it2 = num2.end() - 1;while(it2 >= num2.begin()){int system = system1 + system2;int product = 0;num2_tmp = *it2 - '0';product = num1_tmp * num2_tmp;while (product > 9){int n = product % 10;product_s += n + '0';product /= 10;}product_s += product + '0';reverse(product_s.begin(), product_s.end());for(int i = 0; i < system; i++)product_s += '0';// cout << s << endl;// cout << product_s << endl;s = add().addStrings(s,product_s);// cout << s << endl;product_s.clear();system2++;it2--;}system1++;it1--;}return s;}
};
  • 博主长期更新,博主的目标是不断提升阅读体验和内容质量,如果你喜欢博主的文章,请点个赞或者关注博主支持一波,我会更加努力的为你呈现精彩的内容。

🌈专栏推荐
😈魔王的修炼之路–C语言
😈魔王的修炼之路–数据结构初阶
😈魔王的修炼之路–C++
😈魔王的修炼之路–Linux
更新不易,希望得到友友的三连支持一波。收藏这篇文章,意味着你将永久拥有它,无论何时何地,都可以立即找到重新阅读;关注博主,意味着无论何时何地,博主将永久和你一起学习进步,为你带来有价值的内容。

请添加图片描述

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

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

相关文章

Bio-Rad(Abd serotec)独特性抗体

当一种抗体与另一种抗体的独特型结合时&#xff0c;它被称为抗独特型抗体。抗体的可变部分包括独特的抗原结合位点&#xff0c;称为独特型。独特型(即独特型)内表位的组合对于每种抗体都是独特的。 如今开发的大多数治疗性单克隆抗体是人的或人源化的&#xff0c;用于诱导抗药…

华为策略路由+NQA配置

---NQA--- [RouterA] nqa test-instance admin NQA [RouterA-nqa-admin-vlan10] test-type icmp [RouterA-nqa-admin-vlan10] destination-address ipv4 对方地址 [RouterA-nqa-admin-vlan10] frequency 10 [RouterA-nqa-admin-vlan10] probe-count 2 [RouterA-nqa-admin-vlan…

【国产MCU】-认识CH32V307及开发环境搭建

认识CH32V307及开发环境搭建 文章目录 认识CH32V307及开发环境搭建1、CH32V307介绍2、开发环境搭建3、程序固件下载1、CH32V307介绍 CH32V307是沁恒推出的一款基于32位RISC-V设计的互联型微控制器,配备了硬件堆栈区、快速中断入口,在标准RISC-V基础上大大提高了中断响应速度…

【HTML 基础】标签的属性

文章目录 1. src - 图像和脚本的来源2. alt - 替代文本3. href - 超链接目标4. class - 类5. id - 标识符总结 在 HTML 中&#xff0c;标签不仅定义了文档的结构和内容&#xff0c;还可以通过属性为标签提供附加信息&#xff0c;以调整标签的行为或外观。以下是一些常见的 HTML…

java 社区资源管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web社区资源管系统是一套完善的java web信息管理系统 &#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.…

bxCAN-中断

bxCAN中断 bxCAN 共有四个专用的中断向量。每个中断源均可通过 CAN 中断使能寄存器 (CAN_IER) 来单独地使能或禁止。 发送中断可由以下事件产生&#xff1a; 发送邮箱 0 变为空&#xff0c;CAN_TSR 寄存器的 RQCP0 位置 1。 发送邮箱 1 变为空&#xff0c;CAN_TSR 寄存器…

SkyWalking+es部署与使用

第一步下载skywalking :http://skywalking.apache.org/downloads/ 第二步下载es:https://www.elastic.co/cn/downloads/elasticsearch 注&#xff1a;skywalking 和es要版本对应&#xff0c;可从下面连接查看版本对应关系&#xff0c;8.5.0为skywalking 版本号 Index of /di…

Apache Commons Collection3.2.1反序列化分析(CC1)

Commons Collections简介 Commons Collections是Apache软件基金会的一个开源项目&#xff0c;它提供了一组可复用的数据结构和算法的实现&#xff0c;旨在扩展和增强Java集合框架&#xff0c;以便更好地满足不同类型应用的需求。该项目包含了多种不同类型的集合类、迭代器、队…

大数据学习之Redis、从零基础到入门(三)

目录 三、redis10大数据类型 1.哪十个&#xff1f; 1.1 redis字符串&#xff08;String&#xff09; 1.2 redis列表&#xff08;List&#xff09; 1.3 redis哈希表&#xff08;Hash&#xff09; 1.4 redis集合&#xff08;Set&#xff09; 1.5 redis有序集合&#xff08…

Android SystemUI 介绍

目录 一、什么是SystemUI 二、SystemUI应用源码 三、学习 SystemUI 的核心组件 四、修改状态与导航栏测试 本篇文章&#xff0c;主要科普的是Android SystemUI &#xff0c; 下一篇文章我们将介绍如何把Android SystemUI 应用转成Android Studio 工程项目。 一、什么是Syst…

JAVA Web 学习(一)JDBC 和 Mybatis

一、Java连接数据库——JDBC & Mybatis JDBC 使用步骤 ① 创建工程&#xff0c;导入驱动jar包&#xff08;mysql-connector-java-5.1.48.jar&#xff09; ② 注册驱动。Class.forName(“com.mysql.jdbc.Driver”); ③ 获取连接。Connection conn DriverManager.getConn…

JS之放大镜案例

让我为大家带来一个关于放大镜的实现方法吧&#xff01; <!DOCTYPE html> <html> <head><meta charset"utf-8"><title></title><style>* {margin: 0;padding: 0;}.box {margin: 150px;overflow: hidden;}.big {display: …

华为配置小型网络WLAN 的基本业务示例

配置小型网络WLAN基本业务示例 组网图形 图1 配置小型网络WLAN基本业务组网图 小型WLAN网络简介配置注意事项组网需求数据规划配置思路操作步骤配置文件 小型WLAN网络简介 本文介绍的WLAN网络是指利用频率为2.4GHz或5GHz的射频信号作为传输介质的无线局域网&#xff0c;相对于有…

图论第三天|127. 单词接龙 841.钥匙和房间 463. 岛屿的周长 1971. 寻找图中是否存在路径 684.冗余连接 685.冗余连接II

目录 Leetcode127. 单词接龙Leetcode841.钥匙和房间Leetcode463. 岛屿的周长Leetcode1971. 寻找图中是否存在路径Leetcode684.冗余连接Leetcode685.冗余连接II Leetcode127. 单词接龙 文章链接&#xff1a;代码随想录 题目链接&#xff1a;127. 单词接龙 思路&#xff1a;广搜搜…

Vue之初识Vue CLI 脚手架

Vue CLI 是Vue 官方提供的一个全局命令工具 可以帮助我们快速创建一个开发Vue项目的标准化基础架子。【集成了webpack配置】 脚手架有什么好处&#xff1f; 1.开箱即用&#xff0c;零配置 2.内置 babel 等工具 3.标准化 使用步骤: 1.全局安装(一次):yarn globaladd vue/cli …

webassembly003 whisper.cpp的main项目-4 一些宏定义细节

标记函数为已弃用宏&#xff1a;WHISPER_DEPRECATED 对于 GNU 编译器&#xff08;__GNUC__&#xff09;&#xff0c;使用 __attribute__((deprecated(hint))) 属性将函数标记为已弃用&#xff0c;并附带指定的提示信息。对于微软 Visual C 编译器&#xff08;_MSC_VER&#xf…

Hack The Box-Pov

信息收集&端口利用 先使用nmap对主机进行端口扫描 nmap 10.10.11.251只开放了80端口 访问网站后发现没有什么功能点,尝试目录扫描 并没有什么能够利用的点 使用gobuster进行子域名扫描 gobuster dns -d pov.htb -w /usr/share/wordlists/seclists/Discovery/DNS/subdo…

MSE Nacos 配置变更审计平台使用指南

作者&#xff1a;孙立&#xff08;涌月&#xff09;、邢学超&#xff08;于怀&#xff09;、李艳林&#xff08;彦林&#xff09; 配置审计平台简介 Nacos [ 1] 作为一款业界主流的微服务注册中心和配置中心&#xff0c;管理着企业核心的配置资产&#xff0c;由于配置变更的安…

聚醚醚酮(Polyether Ether Ketone)PEEK在粘接使用时使用UV胶水的优势有哪些?要注意哪些事项?

使用UV胶水在聚醚醚酮&#xff08;Polyether Ether Ketone&#xff0c;PEEK&#xff09;上进行粘接可能具有一些优势&#xff0c;但同时也需要注意一些事项。以下是使用UV胶水的优势和需要考虑的事项&#xff1a; 优势&#xff1a; 1.快速固化&#xff1a; UV胶水通常具有快速…

spark window源码探索

核心类&#xff1a; 1. WindowExec 物理执行逻辑入口&#xff0c;主要doExecute()和父类WindowExecBase 2. WindowFunctionFrame 窗框执行抽象&#xff0c;其子类对应sql语句的不同窗框 其中又抽象出BoundOrdering类, 用于判断一行是否在界限内(Bound), 分为RowBoundOrdering…