博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode: Multiply Strings
阅读量:4648 次
发布时间:2019-06-09

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

题目

大整数乘法

 

思路:

1. 转化成分组背包问题, 代码比较 tricky

2. 将 string 相乘转化为 string 按位乘再加的过程

3. 细节. 不同长度 string 相加可以先补 0, 对齐. 按位相乘的时候, 可以从左向右计算, 便于移位

 

代码:

class Solution {public:    string multiply(string num1, string num2) {		if(num1.size() <= 0 || num2.size() <= 0)			return "";		if(num1.size() == 1 && num1[0] == '0')			return "0";		if(num2.size() == 1 && num2[0] == '0')			return "0";		if(num1.size() < num2.size()) {			swap(num1, num2);		}		string res;		for(int i = 0; i < num2.size(); i++) {			string party = oneBitMultipy(num1, num2[i]-'0');			res.push_back('0');			res = add(res, party);		}		return res;    }	string add(string num1, string num2) {		string res = "";		int len1 = num1.size(), len2 = num2.size();		if(len1 < len2) {			res.append(num2.size()-num1.size(), '0').append(num1);			num1 = res;		}else if(len1 > len2) {			res.append(num1.size()-num2.size(), '0').append(num2);			num2 = res;		}		res.clear();		int leftover = 0, len = num1.size()-1;		int i;		for(i = 0; i < num1.size(); i ++) {			int tmp = leftover+num1[len-i]-'0'+num2[len-i]-'0';			res.push_back(tmp%10+'0');			leftover = tmp/10;		}				if(leftover) {			res.push_back('0'+leftover);		}		reverse(res.begin(), res.end());		return res;	}	string oneBitMultipy(string num1, int bit) {		string res;		int leftover = 0;		for(int i = num1.size()-1; i >= 0; i--) {			int tmp = (num1[i]-'0')*bit + leftover;			res.push_back(tmp%10+'0');			leftover = tmp/10;		}		if(leftover) {			res.push_back(leftover+'0');		}		reverse(res.begin(), res.end());		return res;	}};

  

转载于:https://www.cnblogs.com/xinsheng/p/3510935.html

你可能感兴趣的文章
USACO 1.5.4 Checker Challenge
查看>>
第二阶段站立会议7
查看>>
[18]Debian Linux Install GNU GCC Compiler and Development Environment
查看>>
JAVA多线程
查看>>
ACE(Adaptive Communication Environment)介绍
查看>>
delphi 更改DBGrid 颜色技巧
查看>>
python编码问题
查看>>
POJ 2031 Building a Space Station
查看>>
面向对象1
查看>>
编程开发之--java多线程学习总结(5)
查看>>
as3调用外部swf里的类的方法
查看>>
如何让 zend studio 10 识别 Phalcon语法并且进行语法提示
查看>>
任意阶幻方(魔方矩阵)C语言实现
查看>>
视频教程--ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库
查看>>
第五次作业
查看>>
织梦教程
查看>>
杭电多校 Harvest of Apples 莫队
查看>>
java 第11次作业:你能看懂就说明你理解了——this关键字
查看>>
C/C++心得-结构体
查看>>
函数名作为参数传递
查看>>