LeetCode: Multiply Strings [042]
来源:互联网 发布:打印机usb端口设置 编辑:程序博客网 时间:2024/06/06 14:14
【题目】
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.
【题意】
给定用字符串表示的整数,返回两个数的乘积结果字符串。两个数字都非负,且能任意大。
【思路】
1. 考虑其中一个数是0的情况
2. 模拟乘法运算过程
维护一个vector,用来存储成绩结果结各个数位上的累加值,从0~高位依次是个,十,百,千,万......
然后对各个位置上的累加值mod 10就能得到对应的值【注意进位的处理】
【代码】
class Solution {public: string multiply(string num1, string num2) { string result=""; //默认num1是被乘数,num2是乘数,我们先保证乘数的位数小于被乘数 if(num1.length()<num2.length()){ string temp=num1; num1=num2; num2=temp; } //判断乘数或被乘数是否为0 if(num1=="0"||num2=="0")return "0"; //处理一般情况 vector<int> posVal; int posSize=0; //用来确定posSize中已有的位数 int lenNum1=num1.length(); int lenNum2=num2.length(); //乘数的每一位与被乘数的每一位相乘 for(int i=lenNum2-1; i>=0; i--){ int pos2Add=lenNum2-1-i; for(int j=lenNum1-1; j>=0; j--){ int multiplyVal=((int)(num2[i]-'0'))*((int)(num1[j]-'0')); //将乘积累加到对应的结果位,进位问题先不管 if(pos2Add<posSize){ posVal[pos2Add]+=multiplyVal; } else{ posVal.push_back(multiplyVal); posSize++; } pos2Add++; } } //生成结果 int toNext=0; //存储进位值 for(int i=0; i<posSize; i++){ int curPosVal=(toNext+posVal[i])%10; char curPosValChar=curPosVal+'0'; toNext=(toNext+posVal[i])/10; result=curPosValChar+result; } //别忘了还有进位值需要处理 while(toNext>0){ int curPosVal=toNext%10; char curPosValChar=curPosVal+'0'; toNext=toNext/10; result=curPosValChar+result; } return result; }};
0 0
- LeetCode: Multiply Strings [042]
- LeetCode: Multiply Strings
- LeetCode Multiply Strings
- LeetCode: Multiply Strings
- [Leetcode] Multiply Strings
- [LeetCode] Multiply Strings
- [Leetcode] Multiply Strings
- LeetCode 45: Multiply Strings
- [LeetCode]Multiply Strings
- [LeetCode] Multiply Strings
- LeetCode-Multiply Strings
- [leetcode] Multiply Strings
- LeetCode - Multiply Strings
- Leetcode: Multiply Strings
- LeetCode题解:Multiply Strings
- leetcode Multiply Strings
- LeetCode Multiply Strings
- LeetCode | Multiply Strings
- 修改Tomcat默认编码
- SQL Server 2008将数据导出到SQL脚本文件
- 平板电脑市场为何销量增长缓慢?平板电脑未解决需求问题
- 常见可控硅带驱动 光耦 三极管 电阻三种方式
- 220M!华为海思率先搞定TD-LTE载波聚合
- LeetCode: Multiply Strings [042]
- 发个自定义Xshell颜色主题Color Schemes
- zoj 2853 Evolution(矩阵快速幂)
- 一辈子不长,活的就是一种心情
- 析构函数
- Keen Team: 这群执著的人和那些纯粹的事
- phpStorm打开提示 failed to create JVM 的解决办法
- LeetCode – Remove Duplicates from Sorted Array II (Java)
- 如何配置一个好用的Android模拟器