难度:中等
频次:55

题目:

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

注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数。

解题思路: 拆出来的乘法最后的结果是string,最后用string+string得出string

注意:
  • 前提先掌握字符串的相加
  • string下的==和equals的区别
  • 得反转
代码
class Solution {public String multiply(String num1, String num2) {// ==和equals的区别if(num1.equals("0") || num2.equals("0")) return "0";int len1=num1.length();int len2=num2.length();//每一行的计算结果String sum="";//都是从高位到低位for(int i=len2-1;i>=0;i--){StringBuilder temp=new StringBuilder();//乘法进位int carry=0;//补0,因为后面后面会反转,所以放前面for(int k=0;k<len2-i-1;k++){temp.append('0');}int number2=num2.charAt(i)-'0';for(int j=len1-1;j>=0||carry!=0;j--){//进位int number1=j<0?0:num1.charAt(j)-'0';int a=(number1*number2+carry)%10;temp.append(a);carry=(number1*number2+carry)/10;}//最后记得反转sum=add(sum,temp.reverse().toString());}return sum;}public String add(String num1,String num2){int len1=num1.length()-1;int len2=num2.length()-1;StringBuilder sum=new StringBuilder();int i=0;int carry=0;while(len1>=0||len2>=0||carry!=0){//这里只需要单独判断就行了,不需要放一起int temp1=len1>=0?num1.charAt(len1)-'0':0;int temp2=len2>=0?num2.charAt(len2)-'0':0;sum.append((temp1+temp2+carry)%10);carry=(temp1+temp2+carry)/10;len2--;len1--;}//最后记得反转return sum.reverse().toString();}
}

多写写 leetcode 43. 字符串相乘相关推荐

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

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

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

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

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

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

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

    文章目录 1. 题目 2. 小学竖式乘法 2.1 普通版 2.2 优化版 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.字符串相乘

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

  9. 【Day24】 LeetCode算法题 (注释详细+解题思路)[43. 字符串相乘 ] [1800. 最大升序子数组和]

    刷题打卡,第 二十四 天 题目一.43. 字符串相乘 题目二.1800. 最大升序子数组和 题目一.43. 字符串相乘 原题链接:43. 字符串相乘 题目描述: 给定两个以字符串形式表示的非负整数 n ...

最新文章

  1. 社交网络图挖掘1--将社交网络看作图及其聚类
  2. Mac-使用技巧之快速新建txt文本
  3. 北大青鸟广州天河:高中生做技术经理!
  4. c 语言cad 二次开发,c#对AutoCAD二次开发
  5. java基础—Hashtable,HashMap,TreeMap的差别
  6. 持续集成工具jenkins的部署--Windows篇
  7. Python中查找包含它的列表元素的索引,index报错!!!
  8. word修改公式中的部分字体
  9. Loadrunner11完美破解小笔记
  10. android studio连接服务端代码,Android studio - 无法连接到LDAP服务器(示例代码)
  11. java文档注释加减乘除,java精确的加减乘除
  12. Redis基本数据类型、应用场景、操作指令
  13. PHP团队 编码规范 代码样式风格规范
  14. 常用的 Cron 时间表达式 定时器 正则表达式
  15. 系统集成项目管理工程师10大管理5个过程组47个过程域
  16. 墓碑上的字符C语言,墓碑上常见的“故显考、故显妣、先考、先妣”,分别是什么意思?...
  17. RestTemplate 下载文件
  18. 微信朋友验证消息是什么来源_微信好友来源朋友验证消息
  19. 简易购物车实体类的设计
  20. 对于嵌入式为什么要有uboot的深度解析

热门文章

  1. Linux安装python3.6 和pip
  2. 索引键的唯一性(2/4):唯一与非唯一聚集索引
  3. 杂乱无章之javascript(一)
  4. WEBAPP开发技巧
  5. 日期類型的定義6/14
  6. 新手向:从不同的角度来详细分析Redis
  7. ClassLoader(一)- 介绍
  8. 什么心态阻碍了你职业的发展
  9. Java live template[在此处输入文章标题]
  10. linux用终端上传文件和文件家到远程的服务器