[Leetcode] Multiply strings 字符串对应数字相乘
Given two numbers represented as strings, return multiplication of the numbers as a string.
Note: The numbers can be arbitrarily large and are non-negative.
题意:计算字符串对应数字的乘积。参考JustDoIT的博客。
思路:先用一维向量存放计算的中间值,中间值存放对应位置乘积的和(暂不考虑进位的情况);然后针对进位的情况,进行计算;注意要跳过开始为0的情况(因为向量开始全部初始为0);然后将数字转化为字符串。以234*156为例:

 1 class Solution {
 public:
     string multiply(string num1, string num2)
     {
         int len1=num1.size();
         int len2=num2.size();
         vector<int> midVal(len1+len2,);
         int k=len1+len2-;
         for(int i=;i<len1;++i)
             for(int j=;j<len2;++j)
             {
                 midVal[k-i-j]+=(num1[i]-'')*(num2[j]-'');  //从右向左
             }
         int carry=;    //进位
         for(int i=;i<len1+len2;++i)
         {
             midVal[i]+=carry;
             carry=midVal[i]/;
             midVal[i]%=;
         }
         int i=len1+len2-;
         while(midVal[i]==) //去除向量中最开始的0
             i--;
         if(i<) return ""; //全部为0时
         //将值变成字符串
         string res;
         for(;i>=;--i)
             res.push_back(midVal[i]+'');
         return res;
     }
 };
另外更高效的计算大整数乘法一般有:(1)karatsuba算法,复杂度为3nlog3≈3n1.585,可以参考百度百科、乘法算法-Karatsuba算法。(2)基于FFT(快速傅里叶变换)的算法,复杂度为o(nlogn), 可以参考FFT, 卷积, 多项式乘法, 大整数乘法
[Leetcode] Multiply strings 字符串对应数字相乘的更多相关文章
- [LeetCode] Multiply Strings 字符串相乘
		
Given two numbers represented as strings, return multiplication of the numbers as a string. Note: Th ...
 - [LeetCode] 43. Multiply Strings 字符串相乘
		
Given two non-negative integers num1 and num2represented as strings, return the product of num1 and ...
 - [LeetCode] 43. Multiply Strings ☆☆☆(字符串相乘)
		
转载:43. Multiply Strings 题目描述 就是两个数相乘,输出结果,只不过数字很大很大,都是用 String 存储的.也就是传说中的大数相乘. 解法一 我们就模仿我们在纸上做乘法的过程 ...
 - 43. Multiply Strings 字符串相乘
		
1. 原始题目 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. 示例 1: 输入: num1 = "2&qu ...
 - Multiply Strings 字符串相乘
		
http://www.cnblogs.com/TenosDoIt/p/3735309.html https://blog.csdn.net/fly_yr/article/details/4805561 ...
 - [LeetCode] Add Strings 字符串相加
		
Given two non-negative numbers num1 and num2 represented as string, return the sum of num1 and num2. ...
 - LeetCode: Multiply Strings  解题报告
		
Multiply StringsGiven two numbers represented as strings, return multiplication of the numbers as a ...
 - LeetCode OJ:Multiply Strings (字符串乘法)
		
Given two numbers represented as strings, return multiplication of the numbers as a string. Note: Th ...
 - 043 Multiply Strings 字符串相乘
		
给定两个以字符串表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积.注意: num1 和 num2 的长度均小于110. num1 和 num2 均只包含数字 0 ...
 
随机推荐
- wamp环境下安装imagick扩展
			
先上图,如下是安装成功后的phpinfo()界面: 安装步骤: 1.先确定安装版本,比如我的的php : php7.0.12 x86 ts 那么就需要三方版本 要一致:imagick软件本身( 如x ...
 - 关于使用array_rand随机取出数组的值
			
代码如下 <?php echo "<meta charset='utf-8'/>";//选择解码方式,防止乱码现象 $a = array("abc&qu ...
 - Delphi方法
			
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, For ...
 - django中的ContentType使用
			
使用背景 最近设计表的时候遇到一个问题,有两门课程 一门专业课,一门学位课,我们按照时间长度来进行售卖,比如专业课一个月19元,两个月35元,三个月50元. 可以这么做但是领导不让我这么设计.... ...
 - hack游戏攻略(梦之光芒黑客小游戏)
			
2019.2.11 继续玩~~还是黑客游戏闯关类的 地址:http://monyer.com/game/game1/ 直接查看页面代码: first.php就是了: 查看源代码: 这里尝试输入 两个空 ...
 - Python3 time模块&datetime模块&random模块
			
''' time模块 ''' # import time # print(help(time)) # help()提供帮助 # print(time.time()) # 1970年开始到现在的秒数(时 ...
 - python基础之socket套接字基础part2
			
基于UDP的socket 面向无连接的不可靠数据传输,可以没有服务器端,只不过没有服务器端,发送的数据会被直接丢弃,并不能到达服务器端 1 #客户端 2 import socket 3 ip_port ...
 - jsp中的input
			
Input表示Form表单中的一种输入对象,其又随Type类型的不同而分文本输入框,密码输入框,单选/复选框,提交/重置按钮等,下面一一介绍. 1,type=text 输入类型是text,这是我们见的 ...
 - 转载:BUG定位
			
1.web前端 Web前端就是通常说的网页.互联网公司的前端一般包含如下内容:JavaScript.ActionScript.CSS.HTML(..ML).Flash.交互式设计.视觉设计 web前端 ...
 - kill -9 vs killall
			
kill Linux中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令.通常,终止一个前台进程可以使用Ctrl+C键,但是,对于一个后 ...