博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode 43 字符串相乘
阅读量:4961 次
发布时间:2019-06-12

本文共 2072 字,大约阅读时间需要 6 分钟。

题目:

给定两个以字符串形式表示的非负整数 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[0]-'0'==0 || num2[0]=='0')            return "0";        string ans="";        int k=0;        int JW=0;   //1、进位        vector
temp(120,""); //2、很有必要初始化,因为要从某一个字符串开始填充数字字符 for(int i=num1.size()-1; i>=0; i--) { JW=0; int kk=k; while(kk--) temp[i] += '0'; //3、乘数的高位乘被乘数时,中间结果应该是多个十倍,如:1*21, 计算1*1时的中间结果为1,而1*2时的中间结果为20 for(int j=num2.size()-1; j>=0; j--) { int u1 = num1[i]-'0'; int u2 = num2[j]-'0'; if((u1*u2+JW)/10 > 0) { temp[i] += ((u1*u2+JW)%10+'0'); //4、解释说明第2条,i初始不是0,一开始从第i个string开始填充 JW = (u1*u2 + JW)/10; } else { temp[i] += ((u1*u2 + JW)+'0'); JW = 0; } } if(JW) { temp[i] += JW+'0'; } k++; //5、对应解释第3条 }//以下是把中间结果相加 int y=0; int len = temp[0].size(); //6、注意这里最长的应该是第0个数组,因为上面的i是倒序的,即乘数的最高位和被乘数相乘后得到的字符串应该最长 JW = 0; for(int i=0; i
0) { ans += (y+JW)%10+'0'; JW = (y+JW)/10; } else { ans += (y+JW)+'0'; JW = 0; } } if(JW) ans += JW+'0'; string res=""; for(int i=ans.size()-1; i>=0; --i) res += ans[i]; return res; }};

 

转载于:https://www.cnblogs.com/moxiangfeng/p/10663299.html

你可能感兴趣的文章
CODE[VS] 1842 递归第一次
查看>>
20180418小测
查看>>
Spring Cloud是怎么运行的?
查看>>
12 联结表
查看>>
数字三角形
查看>>
NGUI 减少drawcall规则
查看>>
三元表达,匿名函数
查看>>
前端笔记-基础笔记
查看>>
【LeetCode & 剑指offer刷题】查找与排序题6:33. Search in Rotated Sorted Array(系列)
查看>>
GNU/Linux超级本ZaReason Ultralap 440体验
查看>>
将github上托管的代码 在我的域名下运行
查看>>
【Manthan, Codefest 18 (rated, Div. 1 + Div. 2) C】Equalize
查看>>
【codeforces 767A】Snacktower
查看>>
【MemSQL Start[c]UP 3.0 - Round 1 C】 Pie Rules
查看>>
Ognl中“%”、“#”、“$”详解
查看>>
我对应用软件——美团的看法
查看>>
我最喜欢的 5 个 Gedit 插件
查看>>
OOoLatex:在 OpenOffice.org 中拔出 Latex 公式
查看>>
linu学习第二天:文件系统相关操作
查看>>
执行了的程序,才是你的程序.
查看>>