大整数乘法–leetcode Multiply Strings

大整数乘法–leetcode Multiply Strings大整数乘法本文转载自 http www cnblogs com TenosDoIt p 3735309 html 我们在日常的大整数计算中 通常是把它转化为字符型计算 这道题的思路就和我们小学计算乘法一样 想乘的的结果 错位相加 最终进位 得到我们的结果 题干如下 Giventwonon negativeinte

大整数乘法


题干如下:

Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and num2. Note: The length of both num1 and num2 is < 110. Both num1 and num2 contains only digits 0-9. Both num1 and num2 does not contain any leading zero. You must not use any built-in BigInteger library or convert the inputs to integer directly. 

289*785为例:

这里写图片描述


代码如下:

class Solution { 
      public: string multiply(string num1, string num2) { 
      int s1 = num1.size(); int s2 = num2.size(); if(num1 == "0" || num2 == "0")return "0"; int k = s1+s2-2; if(k <= 0){ 
     } vector<int>v(s1+s2,0); for(int i = 0; i<s1;i++) //未进位 for(int j = 0;j<s2;j++){ 
      v[k-i-j]+=(num1[i]-'0')*(num2[j]-'0'); } int carry = 0; for(int i = 0;i<s1+s2;i++){ 
      //进位 v[i]+=carry; carry = v[i]/10; v[i] = v[i]%10; } reverse(v.begin(),v.end()); int u = 0; while(v[u] == 0)u++; //去掉前面的0 string res = ""; for(int i = u;i<v.size();i++) res+=v[i]+'0'; return res; } }; 

下面更新一个Java版本的:

class Solution { 
      public String multiply(String num1, String num2) { 
      int len1 = num1.length(); int len2 = num2.length(); int[] res = new int[len1+len2]; int bit = 0; for(int i = len1-1; i>=0; i--){ 
      for(int j = len2-1; j>=0; j--){ 
      int ret = (num1.charAt(i)-'0') * (num2.charAt(j)-'0') + res[i+j+1]; res[i+j] += ret / 10; res[i+j+1] = ret % 10; } } boolean flag = true; // 去除前导0 StringBuilder sb = new StringBuilder(); for(int i = 0; i<res.length; i++){ 
      if(res[i] == 0 && flag){ 
      continue; }else{ 
      flag = false; sb.append(res[i]); } } return sb.length() == 0 ? "0" : sb.toString(); } } 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231025.html原文链接:https://javaforall.net

(0)
上一篇 2026年2月2日 下午4:01
下一篇 2026年2月2日 下午4:22


相关推荐

  • python最新激活码2021 4月【注册码】

    python最新激活码2021 4月【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
    183
  • 图像识别与卷积神经网络

    图像识别与卷积神经网络卷积神经网络是除了全连接神经网络以外另一个常用的网络结果,其在图像识别方面表现十分突出。本文结合Tensorflow:实战Google深度学习框架,讲述卷积神经网络常用数据集,介绍卷积网络的结构思想,以及通过TensorFlow实现其设计。1图像识别数据集MNIST手写体识别数据集解决是一个相对简单的问题,而对于更加复杂的类别,可以用到CIFAR数据集。比如CIFAR10数据集收集了来自10…

    2022年5月30日
    47
  • Flume NG 学习笔记(五)Sinks和Channel配置

    Flume NG 学习笔记(五)Sinks和Channel配置一 HDFSSinkFlum 是将事件写入到 Hadoop 分布式文件系统 HDFS 中 主要是 Flume 在 Hadoop 环境中的应用 即 Flume 采集数据输出到 HDFS 适用大数据日志场景 目前 它支持 HDFS 的文本和序列文件格式 以及支持两个文件类型的压缩 支持将所用的时间 数据大小 事件的数量为操作参数 对 HDFS 文件进行关闭 关闭当前文件 并创建一个新的 它还可以对事源的机

    2026年3月18日
    1
  • fcntl函数详解

    fcntl函数详解功能描述 根据文件描述词来操作文件的特性 include unistd h include fcntl h nbsp intfcntl intfd intcmd nbsp intfcntl intfd intcmd longarg nbsp intfcntl i fcntl h unistd h

    2026年3月18日
    3
  • Word接入DeepSeek保姆级教程操作步骤

    Word接入DeepSeek保姆级教程操作步骤

    2026年3月16日
    2
  • Python for循环的使用

    Python for循环的使用Pythonfor循环的使用(一)for循环的使用场景1.如果我们想要某件事情重复执行具体次数的时候可以使用for循环。2.for循环主要用来遍历、循环、序列、集合、字典,文件、甚至是自定义类或函数。(二)for循环操作列表实例演示使用for循环对列表进行遍历元素、修改元素、删除元素、统计列表中元素的个数。1.for循环用来遍历整个列表#for循环主

    2022年8月12日
    10

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号