题目:

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

示例 1:

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

示例 2:

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

说明:

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

解题思路:

1、乘数的每一位转换成int型,然后与被乘数相乘,取得中间结果temp[i]。 如“12” * “123”,则中间结果为 “36”、“230”、“1200”。(注意这里高位应该相应的增大多个十倍)

2、将1得到的每一个中间结果temp相加。

代码:

class Solution {
public:
string multiply(string num1, string num2) {
if(num1[]-''== || num2[]=='')
return "";
string ans="";
int k=;
int JW=; //1、进位
vector<string> temp(,""); //2、很有必要初始化,因为要从某一个字符串开始填充数字字符
for(int i=num1.size()-; i>=; i--)
{
JW=;
int kk=k;
while(kk--)
temp[i] += ''; //3、乘数的高位乘被乘数时,中间结果应该是多个十倍,如:1*21, 计算1*1时的中间结果为1,而1*2时的中间结果为20
for(int j=num2.size()-; j>=; j--)
{
int u1 = num1[i]-'';
int u2 = num2[j]-'';
if((u1*u2+JW)/ > )
{
temp[i] += ((u1*u2+JW)%+''); //4、解释说明第2条,i初始不是0,一开始从第i个string开始填充
JW = (u1*u2 + JW)/;
}
else
{ temp[i] += ((u1*u2 + JW)+'');
JW = ;
} }
if(JW)
{
temp[i] += JW+'';
}
k++; //5、对应解释第3条
}
//以下是把中间结果相加
int y=;
int len = temp[].size(); //6、注意这里最长的应该是第0个数组,因为上面的i是倒序的,即乘数的最高位和被乘数相乘后得到的字符串应该最长
JW = ; for(int i=; i<len; i++)
{
y=;
for(int j=; j<num1.size(); j++) //7、这里j的上限应该是乘数的位数,因为有多少个乘数就有多少个中间结果
{
if( i < temp[j].size()){ //8、一定要注意这里,i的循环上限是最长的string的大小,但不是每一个中间结果都那么长,所以不加判断就会导致y加上了空值,程序出错
y += temp[j][i]-'';
}
} if((y+JW)/ > )
{
ans += (y+JW)%+'';
JW = (y+JW)/;
}
else
{
ans += (y+JW)+'';
JW = ;
}
}
if(JW)
ans += JW+'';
string res="";
for(int i=ans.size()-; i>=; --i)
res += ans[i];
return res;
}
};

LeetCode 43 字符串相乘的更多相关文章

  1. LeetCode 43. 字符串相乘(Multiply Strings)

    43. 字符串相乘 43. Multiply Strings 题目描述 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. ...

  2. Java实现 LeetCode 43 字符串相乘

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

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

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

  4. [LeetCode]415. 字符串相加、43. 字符串相乘

    题目 415. 字符串相加 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和. 题解 维护一个temp表示当前两数相加+上一个进位的和. 每次更新结果的一位. 注意终止条件. 最后将 ...

  5. leetcode刷题-43字符串相乘

    题目 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. 思路 字符串转数字:从字符串第一位开始取,每次取出的值转换为数字 ...

  6. LeetCodr 43 字符串相乘

    思路 用一个数组记录乘积的结果,最后处理进位. 代码 class Solution { public: string multiply(string num1, string num2) { if(n ...

  7. 代码题(59)— 字符串相加、字符串相乘、打印最大n位数

    1.415. 字符串相加 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和. 思路:和链表相加类似,求进位. class Solution { public: string addS ...

  8. Leetcode中字符串总结

    本文是个人对LeetCode中字符串类型题目的总结,纯属个人感悟,若有不妥的地方,欢迎指出. 一.有关数字 1.数转换 题Interger to roman和Roman to integer这两题是罗 ...

  9. LeetCode43(字符串相乘)

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

随机推荐

  1. RNA Spike-in Control(转)

    Spike-in Control:添加/加入(某种物质)的对照(组)在某些情况下,待检验样本中不含待测物质或者含有但是浓度很低,为了证明自己建立的方法能对样本中待测物质进行有效的检测,可在待检样本中加 ...

  2. C#中读取xml文件指定节点

    目录(?)[-] XmlDocumentSelectSingleNode方法的使用 XmlDocumentSelectNodes方法的使用 通过节点属性查找指定节点   参考:Select XML N ...

  3. 20171022xlVBA练手提取入所记录

    Sub GetWordText改进() Dim Wb As Workbook Dim Sht As Worksheet Dim Rng As Range Dim wdApp As Object Dim ...

  4. 编译spark-0.9.1

    准备工作:注意 spark-0.9.1 要求 scala-2.10.x 版本,sbt-0.12.4版本. centos 6.4 x64 系统,java 1.7.0 x64 1,安装 scala-2.1 ...

  5. Python安装第三方库,报错超时: Read timed out.

    1.安装beautifulsoup4 >pip install beautifulsoup4 报错超时: Read timed out. 2.解决办法:pip --default-timeout ...

  6. 【Oracle】【4】mybatis insert/update 数据后返回关键字段

    1,插入 insert 场景:ID字段的值是数据库表“默认/表达式”(sys_guid())自动生成,插入一条数据到数据库后,需要获取该条数据的ID 解决方案: (1)Service层生成UUID p ...

  7. mysql分组统计以及全部统计union all使用

    select '全部' AS `organ_category`, COUNT(*) AS amount FROM `organ_new` WHERE `city_code` ='SZ0755' AND ...

  8. WDA基础十一:Excel上载

    1.因为是做建单的例子,所以没有做结果显示,在加了两个属性 DATESOURCE  Type XSTRING FILENAME         Type STRING 2.在VIEW中新建elemen ...

  9. spring cloud服务发现注解之@EnableDiscoveryClient与@EnableEurekaClient

    使用服务发现的时候提到了两种注解,一种为@EnableDiscoveryClient,一种为@EnableEurekaClient,用法上基本一致,今天就来讲下两者,下文是从stackoverflow ...

  10. 更改pip源至国内镜像

    更改pip源至国内镜像   经常在使用Python的时候需要安装各种模块,而pip是很强大的模块安装工具,但是由于国外官方pypi经常被墙,导致不可用,所以我们最好是将自己使用的pip源更换一下,这样 ...