【Leetcode】43. 字符串相乘

在这里插入图片描述

Halo,这里是Ppeua。平时主要更新C++,数据结构算法,Linux与ROS…感兴趣就关注我bua!

Leetcode 43

  • 题目:
  • 示例:
  • 题解:
    • 详细图解:
    • 代码实现:

img

题目:

在这里插入图片描述

示例:

在这里插入图片描述

题解:

这是一个大数相乘的问题,类似于这篇文章中的高精度乘法 但是高精度乘法只是其中的一个数超过了整形的最大值。这里可以是两个数。所以我们需要进行一下数据的处理。

  1. 先将num1与num2进行一个string to int的处理:让其每一位都减去‘0’得到int中对应的数字

  2. 因为我们要做的是模拟笔算中的乘法,从个位开始算,所以要将其倒着存储:从后往前依次push到vector中

  3. 创建答案数组,将其num1(vector)与num2(vector)每一位相乘,放入对应下标和中,为什么要放入下标和中呢?

    观察下面的式子就能明白啦。

在这里插入图片描述

  1. 因为我们计算的时候是将这个结果直接存入对应的位数中,现在需要计算最后的结果,需要提取他们的个位数

  2. 因为最开始分配的空间是以num1.size()+num2.size()分配的,可能会出现计算的结果仅是五位数,而答案数组的空间是6位数的结果.需要去除数组尾端的0

  3. 最后将结果反转依次存入string中即可

详细图解:

在这里插入图片描述

代码实现:

class Solution {
public:string multiply(string num1, string num2) {vector<int>v1,v2;for(int i=num1.size()-1;i>=0;i--)v1.push_back(num1[i]-'0');for(int i=num2.size()-1;i>=0;i--)v2.push_back(num2[i]-'0');vector<int>ans(num1.size()+num2.size());for(int i=0;i<num1.size();i++){for(int j=0;j<num2.size();j++){ans[i+j]+=v1[i]*v2[j];}}int t=0;for(int i=0;i<ans.size();i++){t+=ans[i];ans[i]=t%10;t/=10;}int k=ans.size()-1;while(k>0&&ans[k]==0)k--;string res;while(k>=0)res+=ans[k--]+'0';return res;}
};

class Solution {

public:

string multiply(string num1, string num2) {

​ vectorv1,v2;

​ for(int i=num1.size()-1;i>=0;i–)v1.push_back(num1[i]-‘0’);

​ for(int i=num2.size()-1;i>=0;i–)v2.push_back(num2[i]-‘0’);

​ vectorans(num1.size()+num2.size());

​ for(int i=0;i<num1.size();i++)

​ {

​ for(int j=0;j<num2.size();j++)

​ {

​ ans[i+j]+=v1[i]*v2[j];

​ }

​ }

​ int t=0;

​ for(int i=0;i<ans.size();i++){

​ t+=ans[i];

​ ans[i]=t%10;

​ t/=10;

​ }

​ int k=ans.size()-1;

​ while(k>0&&ans[k]==0)k–;

​ string res;

​ while(k>=0)res+=ans[k–]+‘0’;

​ return res;

}
(k>0&&ans[k]==0)k–;

​ string res;

​ while(k>=0)res+=ans[k–]+‘0’;

​ return res;

}

};

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

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

相关文章

DBeaver数据库管理工具安装连接PostgreSQL和DM

文章目录 1. 安装2. 连接PostgreSQL3. 连接DM83.1 下载驱动3.2 添加驱动3.3 连接3.4 创建表空间和用户3.5 执行sql 4. 连接Mysql 1. 安装 下载地址 https://dbeaver.io/download/ 2. 连接PostgreSQL 配置显示所有数据库 第二个勾选会显示模板数据库 点击测试连接&#xff0…

如何搭建个人博客?

博客成品展示&#xff1a; 首页&#xff1a; 代码高亮 文章分类 首先需要准备一台云服务器和域名。 域名没有备案的话推荐雨云的美国&#xff0c;速度挺快的。 点我跳转服务器购买地址 配置选入门版也够用了&#xff0c;一年大概200块钱不到&#xff0c;标准版更好咯&#x…

【UniApp开发小程序】项目创建+整合UI组件(FirstUI和uView)

创建项目 下图为初始化的项目的文件结构 引入组件 俗话说&#xff1a;“工欲善其事&#xff0c;必先利其器”&#xff0c;为了更加方便地开发出页面较为美观的小程序&#xff0c;我们先引入成熟的UI组件&#xff0c;再开始开发之旅。&#xff08;如果你是前端高手&#xff0…

mycat设置sql隔离级别的问题

问题 General log中出现大量SQL “SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ”。 该语句会引起两个问题&#xff0c; 1: "REPEATABLE READ"不是我们预期的事物隔离级别。 2: 大量无效的SQL影响性能。 注&#xff1a; MySql的可重复读会带来怎样…

[STM32教程]01如何开始准备hal库的开发环境

文章目录 概述1、认识硬件环境1.1 ARM简介1.2 STM32简介 2. 软件开发环境准备2.1 Keil MDK安装2.2 安装STM32Cube MX2.3 安装STM32 HAL库2.4 St-Link V2使用 总结 概述 本文介绍如何准备stm32f103的hal库工程开发环境&#xff0c;包括cubemx安装、keil mdk安装、stm32 hal库安…

Linux下如何部署Nuxt项目(二)

Linux下如何部署Nuxt项目(一)_小鸟哗啦啦的博客-CSDN博客&#xff0c;书接上回&#xff0c;以实际场景开始。 请认真看完这篇文章&#xff0c;还不会部署Nuxt&#xff0c;我直接拿弹弓打你们家玻璃&#xff01; 一、nuxt的配置检查 服务端渲染的应用&#xff0c;应该是先编译构…

【从零开始学习JAVA | 第二十九篇】Stream流

目录 前言&#xff1a; Stram流&#xff1a; 设计目标&#xff1a; 使用步骤&#xff1a; 1.先得到一条Stream流&#xff0c;并把数据放上去。 2.利用Stream流中的各种API进行操作。 使用Stream流的注意事项&#xff1a; 总结: 前言&#xff1a; 本文我们将学习Stream流…

vue3 前端编码规范

prettier 配置 1. vscode 安装prettier 的 插件 2. 新建 .prettierrc 文件 {"semi": false, // 不尾随分号"singleQuote": true, // 使用单引号"trailingComma": "none" // 多行逗号分隔的语法&#xff0c;最后一行不加逗号 }eslin…

《远见》阅读笔记

不同的环境&#xff0c;不同的职业&#xff0c;职业生涯的建议并没有什么不同 找到热爱的工作&#xff0c;建立热爱的生活 如何思考职业远景 如何分配时间 如何扩张人脉 职业生涯决策框架 三个部分 职场思维、框架、工具实用性建议和案例现实生活为基础&#xff0c;平衡职…

Animboat Application Framework

SpringBoot的服务将部署在云端 管理云端数据和处理分布式的业务请求 本地基础服务将作为云端和终端中间媒介&#xff0c; 与局域网内其它dcc 插件或者app运行实例进行通信&#xff0c; 同时本地基础服务将负责本地数据的管理。 每个AppInstance都会有自己的FlaskSvr用于与Loc…

Acrel-1000DP分布式光伏系统在重工企业的应用

安科瑞 崔丽洁 摘 要&#xff1a;分布式光伏发电特指在用户场地附近建设&#xff0c;运行方式以用户侧自发自用、余电上网&#xff0c;且在配电系统平衡调节为特征的光伏发电设施&#xff0c;是一种新型的、具有广阔发展前景的发电和能源综合利用方式&#xff0c;它倡导就近发电…

【云原生】Docker网络Overlay搭建Consul实现跨主机通信

目录 1.overlay网络是什么&#xff1f; 实现overlay环境 1.overlay网络是什么&#xff1f; 在Docker中&#xff0c;Overlay网络是一种容器网络驱动程序&#xff0c;它允许在多个Docker主机上创建一个虚拟网络&#xff0c;使得容器可以通过这个网络相互通信。 Overlay网络使用…