【LeetCode刷题】--43.字符串相乘

43.字符串相乘

image-20231122213152258

方法一:做加法,模拟竖式乘法的方法计算乘积

image-20231122213223046

class Solution {public String multiply(String num1, String num2) {if(num1.equals("0") || num2.equals("0")){return "0";}String res = "0";//num2逐位与num1相乘for(int i = num2.length() - 1;i >= 0;i--){int carry = 0;//保存num2第i位数字与num1相乘的结果StringBuilder tmp = new StringBuilder();//补0for(int j =0;j<num2.length() - 1- i;j++){tmp.append(0);}int n2 = num2.charAt(i) - '0';//num2的第i位数字n2与num1相乘for(int j = num1.length() - 1;j>=0 || carry!=0 ; j--){int n1 = j < 0 ? 0 : num1.charAt(j) -'0';int product = (n1 * n2 + carry) % 10;tmp.append(product);carry = (n1 * n2 + carry) /10;}res = addStrings(res,tmp.reverse().toString());}return res;}//对两个字符串数字进行相加,返回字符串形式的和public String addStrings(String num1,String num2){StringBuilder builder = new StringBuilder();int carry = 0;  //进位for(int i = num1.length() - 1, j = num2.length() -1; i>=0||j>=0 || carry!=0;i--,j--){int x = i < 0 ? 0:num1.charAt(i) - '0';int y = j < 0 ? 0:num2.charAt(j) - '0';int sum = (x + y + carry) % 10;builder.append(sum);carry = (x + y + carry) / 10;}return builder.reverse().toString();}
}

方法二:做乘法

image-20231122214247681

class Solution {public String multiply(String num1, String num2) {if(num1.equals("0") || num2.equals("0")){return "0";}int len1 = num1.length(),len2 = num2.length();int[] ans = new int[len1 + len2];for(int i = len1 - 1 ;i>=0;i--){int value1 = num1.charAt(i) - '0';for(int j = len2 - 1;j>=0;j--){int value2 = num2.charAt(j) - '0';int sum = ans[i+j+1]+ value1*value2;ans[i+j+1] = sum % 10;ans[i+j] += sum/10;}}StringBuilder sb=new StringBuilder();for(int i=0;i<ans.length;i++){if(i==0 && ans[i]==0){continue;}sb.append(ans[i]);}return sb.toString();}
}

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

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

相关文章

【JavaSE】-4-单层循环结构

回顾 运算符&#xff1a; 算术 --、逻辑 && & || |、比较 、三元 、赋值 int i 1; i; j i; //j2 i3 syso(--j"-----"i) //1 3 选择结构 if(){} if(){}else{} if(){}else if(){}else if(){}else{}//支持byte、short、int //支持char //支持枚举…

MybatisX插件使用

Mybatis X插件 MybatisX 是一款基于 IDEA 的快速开发插件&#xff0c;为效率而生。MybatisX官网&#xff1a;https://baomidou.com/pages/ba5b24/#%E5%8A%9F%E8%83%BD安装方法&#xff1a;打开 IDEA&#xff0c;进入 File -> Settings -> Plugins&#xff0c;输入 mybat…

SpringBoot监听器解析

监听器模式介绍 监听器模式的要素 事件监听器广播器触发机制 SpringBoot监听器实现 系统事件 事件发送顺序 监听器注册 监听器注册和初始化器注册流程类似 监听器触发机制 获取监听器列表核心流程: 通用触发条件: 自定义监听器实现 实现方式1 实现监听器接口: Order(1) …

Linux超简单部署个人博客

1 安装halo 1.1 切换到超级用户 sudo -i 1.2 新建halo文件夹 mkdir ~/halo && cd ~/halo 1.3 编辑docker-compose.yml文件 vim ~/halo/docker-compose.yml 英文输入法下&#xff0c;按 i version: "3"services:halo:image: halohub/halo:2.10container_…

【资深硬件工程师总结-千兆以太网设计指南】

文章目录 01通用PCB布线指南02标志焊盘中的接地过孔区示例03EMI注意事项04ESD注意事项 资深硬件工程师总结-千兆以太网设计指南 本应用笔记旨在帮助客户使用Microchip的10/100/1000 Mbps以太网器件系列设计PCB。本文档提供有关PCB布线的建 议&#xff0c; PCB 布线是保持信号完…

机器学习第12天:聚类

文章目录 机器学习专栏 无监督学习介绍 聚类 K-Means 使用方法 实例演示 代码解析 绘制决策边界 本章总结 机器学习专栏 机器学习_Nowl的博客-CSDN博客 无监督学习介绍 某位著名计算机科学家有句话&#xff1a;“如果智能是蛋糕&#xff0c;无监督学习将是蛋糕本体&a…

【C++】vector的介绍与使用

&#x1f9d1;‍&#x1f393;个人主页&#xff1a;简 料 &#x1f3c6;所属专栏&#xff1a;C &#x1f3c6;个人社区&#xff1a;越努力越幸运社区 &#x1f3c6;简 介&#xff1a;简料简料&#xff0c;简单有料~在校大学生一枚&#xff0c;专注C/C/GO的干货分…

分享-Spss下载含spss25.spss26.spss27等版本

为了学习spss买的&#xff0c;分享安装程序给大家 SPSS 27是一款用于统计分析和数据挖掘的软件&#xff0c;以下是SPSS 27的功能介绍和配置建议&#xff1a; 功能介绍&#xff1a; 数据管理&#xff1a;SPSS 27可以对数据进行管理和清洗&#xff0c;包括数据输入、缺失值处理…

Python开发运维:Celery连接Redis

目录 一、理论 1.Celery 二、实验 1.Windows11安装Redis 2.Python3.8环境中配置Celery 三、问题 1.Celery命令报错 2.执行Celery命令报错 3.Win11启动Celery报ValueErro错误 一、理论 1.Celery (1) 概念 Celery是一个基于python开发的分布式系统&#xff0c;它是简单…

【三维几何学习】自制简单的网格可视化软件 — Mesh Visualization

自制简单的网格可视化软件 — Mesh Visualization 引言一、整体框架1.1 三角形网格1.2 界面管理1.3 VTK可视化界面 二、核心源码2.1 三角形网格&#xff1a;TriMesh类2.2 界面Widget_Mesh_Manager2.3 VTK可视化2.4 main 引言 使用PyQt自制简单的网格可视化软件 - 视频展示 本是…

深信服技术认证“SCSA-S”划重点:信息收集

为帮助大家更加系统化地学习网络安全知识&#xff0c;以及更高效地通过深信服安全服务认证工程师考核&#xff0c;深信服特别推出“SCSA-S认证备考秘笈”共十期内容&#xff0c;“考试重点”内容框架&#xff0c;帮助大家快速get重点知识~ 划重点来啦 深信服安全服务认证工程师…

基于材料生成算法优化概率神经网络PNN的分类预测 - 附代码

基于材料生成算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于材料生成算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于材料生成优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神…