当前位置: 首页 > news >正文

【算法题】43. 字符串相乘

题目

给定两个以字符串形式表示的非负整数 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 Solution {public String multiply(String num1, String num2) {if (num1.equals("0") || num2.equals("0")) {return "0";}String ans = "0";int m = num1.length(), n = num2.length();for (int i = n - 1; i >= 0; i--) {StringBuffer curr = new StringBuffer();int add = 0;for (int j = n - 1; j > i; j--) {curr.append(0);}int y = num2.charAt(i) - '0';for (int j = m - 1; j >= 0; j--) {int x = num1.charAt(j) - '0';int product = x * y + add;curr.append(product % 10);add = product / 10;}if (add != 0) {curr.append(add % 10);}ans = addStrings(ans, curr.reverse().toString());}return ans;}public String addStrings(String num1, String num2) {int i = num1.length() - 1, j = num2.length() - 1, add = 0;StringBuffer ans = new StringBuffer();while (i >= 0 || j >= 0 || add != 0) {int x = i >= 0 ? num1.charAt(i) - '0' : 0;int y = j >= 0 ? num2.charAt(j) - '0' : 0;int result = x + y + add;ans.append(result % 10);add = result / 10;i--;j--;}ans.reverse();return ans.toString();}
}

来自力扣官方题解

http://www.lryc.cn/news/277630.html

相关文章:

  • CH341 SPI方式烧录BK7231U
  • sd-webui-EasyPhoto win 安装笔记
  • gradient_checkpointing
  • 回溯算法part05 算法
  • 阿里云系统盘测评ESSD、SSD和高效云盘IOPS、吞吐量性能参数表
  • RK3568平台开发系列讲解(Linux系统篇)Linux 内核打印
  • 迁移学习的最新进展和挑战
  • Python基础(二十二、自定义模块和包)
  • C#-数组
  • 机器学习周刊第二期:300个机器学习应用案例集
  • 【华为OD机试真题2023CD卷 JAVAJS】中文分词模拟器
  • 基于YOLOv8-pose的画笔关键点(bic_markers)检测
  • 【实用技巧】Windows 电脑向iPhone或iPad传输视频方法1:无线传输
  • 爬虫实战 - 微博评论数据可视化
  • python装饰器嵌套基础
  • C语言之三子棋小游戏的应用
  • 优雅处理并发:Java CompletableFuture最佳实践
  • 熟悉HDFS常用操作
  • Adobe XD是什么?探索这款创新的用户体验设计工具
  • java常用应用程序编程接口(API)——ArrayList概述及使用案例
  • 2024年了,Layui再战三年有问题不?
  • 消息队列-RocketMQ-概览与搭建
  • Vue3技术解析(小册子)
  • 即将消失的五种编程语言?
  • c++学习:STL库(框架)+字符串模板类string+vector容器+list链表
  • 2023年全国职业院校技能大赛(高职组)“云计算应用”赛项赛卷④
  • 使用Scikit Learn 进行识别手写数字
  • GB/T 15036-2018 实木地板检测
  • 基于ElementUI封装的下拉树选择可搜索单选多选清空功能
  • 计算机网络-各层协议