题目英文

Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and num2, also represented as a string.

Example 1:

Input: num1 = "2", num2 = "3"
Output: "6"

Example 2:

Input: num1 = "123", num2 = "456"
Output: "56088"

Note:

  • The length of both num1 and num2 is < 110.
  • Both num1 and num2 contain only digits 0-9.
  • Both num1 and num2 do not contain any leading zero, except the number 0 itself.
  • You must not use any built-in BigInteger library or convert the inputs to integer directly.

题目中文

给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。

示例 1:

输入: num1 = "2", num2 = "3"
输出: "6"

示例 2:

输入: num1 = "123", num2 = "456"
输出: "56088"

示例 3:

输入: num1 = "498828660196", num2 = "840477629533"
输出: "419254329864656431168468"

说明

  • num1 和 num2 的长度小于110。
  • num1 和 num2 只包含数字 0-9。
  • num1 和 num2 均不以零开头,除非是数字 0 本身。
  • 不能使用任何标准库的大数类型(比如 BigInteger)或直接将输入转换为整数来处理。

算法实现

public class Solution {public string Multiply(string num1, string num2) {if (num1 == "0" || num2 == "0")return "0";int len1 = num1.Length;int len2 = num2.Length;int len = len1 + len2;int[] temp = new int[len];for (int i = len2 - 1; i >= 0; i--){int k = len2 - i;int b = num2[i] - '0';for (int j = len1 - 1; j >= 0; j--){int a = num1[j] - '0';int c = a*b;temp[len - k] += c%10;if (temp[len - k] >= 10){temp[len - k] = temp[len - k]%10;temp[len - k - 1]++;}temp[len - k - 1] += c/10;if (temp[len - k - 1] >= 10){temp[len - k - 1] = temp[len - k - 1]%10;temp[len - k - 2]++;}k++;}}StringBuilder sb = new StringBuilder();int s = temp[0] == 0 ? 1 : 0;while (s < len){sb.Append(temp[s]);s++;}return sb.ToString();        }
}

实验结果

  • 状态:通过
  • 311 / 311 个通过测试用例
  • 执行用时:132 ms, 在所有 C# 提交中击败了 94.74% 的用户
  • 内存消耗:24.1 MB, 在所有 C# 提交中击败了 31.82% 的用户


相关图文

1. “数组”类算法

  • LeetCode实战:三数之和
  • LeetCode实战:最接近的三数之和
  • LeetCode实战:求众数
  • LeetCode实战:缺失的第一个正数
  • LeetCode实战:快乐数
  • LeetCode实战:寻找两个有序数组的中位数
  • LeetCode实战:盛最多水的容器
  • LeetCode实战:删除排序数组中的重复项
  • LeetCode实战:搜索旋转排序数组

2. “链表”类算法

  • LeetCode实战:两数相加
  • LeetCode实战:删除链表的倒数第N个节点
  • LeetCode实战:合并两个有序链表
  • LeetCode实战:合并K个排序链表
  • LeetCode实战:两两交换链表中的节点
  • LeetCode实战:旋转链表
  • LeetCode实战:环形链表

3. “栈”类算法

  • LeetCode实战:有效的括号
  • LeetCode实战:最长有效括号
  • LeetCode实战:逆波兰表达式求值

4. “队列”类算法

  • LeetCode实战:设计循环双端队列
  • LeetCode实战:滑动窗口最大值
  • LeetCode实战:整数反转
  • LeetCode实战:字符串转换整数 (atoi)

5. “递归”类算法

  • LeetCode实战:爬楼梯

6. “字符串”类算法

  • LeetCode实战:反转字符串
  • LeetCode实战:翻转字符串里的单词
  • LeetCode实战:最长公共前缀
  • LeetCode实战:字符串相加

7. “树”类算法

  • LeetCode实战:相同的树
  • LeetCode实战:对称二叉树
  • LeetCode实战:二叉树的最大深度
  • LeetCode实战:将有序数组转换为二叉搜索树

8. “哈希”类算法

  • LeetCode实战:两数之和

9. “搜索”类算法

  • LeetCode实战:搜索二维矩阵

10. “动态规划”类算法

  • LeetCode实战:最长回文子串

11. “数值分析”类算法

  • LeetCode实战:回文数
  • LeetCode实战:x 的平方根

LeetCode实战:字符串相乘相关推荐

  1. leetcode -43 -字符串相乘 -java版

    文章目录 题目 代码 题目 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. 示例 1: 输入: num1 = &quo ...

  2. LeetCode 43字符串相乘44通配符匹配

    原创公众号:bigsai,回复进群加入力扣打卡群. 字符串相乘 题目描述: 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形 ...

  3. LeetCode 43. 字符串相乘(大数乘法)

    文章目录 1. 题目 2. 小学竖式乘法 2.1 普通版 2.2 优化版 1. 题目 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示 ...

  4. LeetCode 43. 字符串相乘【c++/java详细题解】

    目录 1.题目 2.思路 3.c++代码 4.java代码 1.题目 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. ...

  5. C++ ,leetcode 43. 字符串相乘 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式

    一.思路: 字符串逆序,然后遍历两个逆序后的字符串,然后对应的字符相乘,i+j等于它的位数. string multiply(string num1, string num2) {reverseStr ...

  6. LeetCode #43字符串相乘

    1.背景知识 1.1 String,StringBuffer,StringConstructor String类是不可变类.StringBuffer和StringConstructor是可变类,字符串 ...

  7. leetcode 43. 字符串相乘(Multiply Strings)

    目录 题目描述: 示例 1: 示例 2: 解法: 题目描述: 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. 示例 1 ...

  8. 多写写 leetcode 43. 字符串相乘

    难度:中等 频次:55 题目: 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. 注意:不能使用任何内置的 BigInt ...

  9. leetcode 43.字符串相乘

    题目 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. 示例 1: 输入: num1 = "2", ...

  10. leetcode数组汇总_LeetCode刷题实战43:字符串相乘

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

最新文章

  1. xamarin的破解安装
  2. 【ARM】ARM流水线技术
  3. 数据流图 系统流程图 程序流程图 系统结构图联系与区别
  4. torch.nn.Parameter()
  5. WAV文件的二进制格式解析
  6. 一分钟了解阿里云产品:安全产品评测:阿里云盾安全威胁情报“态势感知”...
  7. 基于SK6812编码LED实现炫光功能(PWM+DMA功能MCU兼容)
  8. CSAPP Lab5--Writing a Dynamic Storage Allocator
  9. 干货分享|视频制作技巧-视频拍摄/视频剪辑
  10. 使用websocket实现协同编辑
  11. 开机黑屏显示html,开机黑屏显示“This Product is covered by”解决方法
  12. Mac idea破解到2100年
  13. 3 求最大公约数和最小公倍数
  14. 酒店管理系统(源码+数据库)
  15. 杰奇1.7用php53,linux下的杰奇1.7手机站安装教程
  16. 线性表的顺序、链式存储结构基本操作
  17. python线程和进程
  18. 计算机组成原理复习资料
  19. Cytoskeleton 艾美捷肌动蛋白结合蛋白降速分析生物化学试剂盒
  20. Simulink代码生成: Assignment模块及其代码

热门文章

  1. colsure php_PHP Closure(闭包)类详解
  2. java http请求 工具类_Java 实现 Http 请求工具类
  3. Java中final关键字如何使用?
  4. Computed property XXX was assigned to but it has no setter
  5. Ubuntu 16.04安装双显卡驱动方法收集
  6. 光伏电价断崖式下跌 企业遭遇成长烦恼
  7. rails应用ajax之二:使用rails自身支持
  8. javascript面向对象技术基础(二)
  9. 快速把web项目部署到weblogic上
  10. 从当前日期算起,获取几天前的日期和几个月前的日期