大整数乘法–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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 程序员精选:TensorFlow和ML前5名的课程

    程序员精选:TensorFlow和ML前5名的课程

    2021年6月11日
    111
  • java钩子函数(javasocket钩子)

    也不知道我理解的对不对,欢迎大家讨论!自己写了个钩子函数,我理解的钩子函数:publicinterfaceTransactioner{Stringwedontknow();}publicabstractclassGouZi{publicabstractvoidgouzi(Transactione…

    2022年4月13日
    146
  • 测试用例设计的八大要素「建议收藏」

    测试用例设计的八大要素「建议收藏」1、测试用例的八大要素用例编号和其他编号一样,测试用例编号是用来唯一识别测试用例的编号,要求具有易识别和易维护性,用户可以很容易根据用例编号获取到相应用例的目的和作用,在系统测试用例中,编号的一般格式为A-B-C-D这几部分的作用分别如下:A:产品或项目类型,如CMS(内容管理系统)、CRM(客户关系管理系统)B:一般用来说明用例的属性,如ST(系统测试)、IT(集成测试)、UT(单元测试)C:测试需求的表示,说明该用例针对的需求点,可包括测试项和测试子项等,如文档管理、客户投诉信息管理等。

    2022年6月28日
    35
  • 深入浅出Yolo系列之Yolov3&Yolov4&Yolov5&Yolox核心基础知识完整讲解

    深入浅出Yolo系列之Yolov3&Yolov4&Yolov5&Yolox核心基础知识完整讲解因为工作原因,项目中经常遇到目标检测的任务,因此对目标检测算法会经常使用和关注,比如Yolov3、Yolov4算法。当然,实际项目中很多的第一步,也都是先进行目标检测任务,比如人脸识别、多目标追踪、REID、客流统计等项目。因此目标检测是计算机视觉项目中非常重要的一部分。从2018年Yolov3年提出的两年后,在原作者声名放弃更新Yolo算法后,俄罗斯的Alexey大神扛起了Yolov4的大旗。在此,大白将项目中,需要了解的Yolov3、Yolov4系列相关知识点以及相关代码进行完整的汇总,希望和大家

    2022年6月12日
    58
  • 单链表//elemtype为结构体形式输入[通俗易懂]

    单链表//elemtype为结构体形式输入[通俗易懂]#include<iostream>usingnamespacestd;typedefstruct{ stringname; intyear;}elemtype;typedefstructlnode{ elemtypedata; lnode*next;}*linklist;elemtypehaha[10];intcreatlist_r(l…

    2022年5月19日
    54
  • internal server error原因及解决

    internal server error原因及解决常见的内部服务错误的原因有二,一是服务器资源紧张,二是文件权限错误。1.错误的原因一:服务器资源超载。服务器的资源超载:即同一时间内处理器有太多的进程需要处理的时候,会出现500错误。借助SSH,可

    2022年7月4日
    32

发表回复

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

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