Multiply Strings
来源:互联网 发布:ubuntu安装fcitx五笔 编辑:程序博客网 时间:2024/05/01 00:31
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.
Hide Similar Problems
class Solution {public: string multiply(string num1, string num2) { string addDeci(string a,string b); string str;//默认为空串 //存储最后结果 string strBit;//存储一位相乘的结果. if (num2.size()>num1.size()) { string tmp=num1; num1=num2; num2=tmp; } if (num2=="0") { return "0"; } int lengthA=num1.size(); int lengthB=num2.size(); //小的 int carry =0; //进位标志 char bitSum; int MultiplySum;//每一次乘数个位的乘 for(int j=0;j<lengthB;j++)//j个相加..1,10,100 { strBit=""; for(int i=0;i<lengthA;i++) //每一位和他相加.. { MultiplySum=(num2[lengthB-j-1]-'0')*(num1[lengthA-i-1]-'0')+carry; carry=MultiplySum/10; if(carry>0) //有进位 { MultiplySum=MultiplySum%10; bitSum='0'+MultiplySum; strBit=bitSum+strBit; //每一次一个右边最小加入进来.. } else { bitSum='0'+MultiplySum; strBit=bitSum+strBit; } } if(carry>0) { MultiplySum=carry; bitSum='0'+MultiplySum; //char型 strBit=bitSum+strBit; } carry=0; //加一位,10,20,两个数相加.. for (int Cntdigit=0;Cntdigit<j;Cntdigit++)//看移动多少位 { strBit=strBit+"0"; } str=addDeci(strBit,str); } return str; }};string addDeci(string a,string b){string str;//默认为空串if (b.size()>a.size()){string tmp=b;b=a;a=tmp;}int lengthA=a.size();int lengthB=b.size();//最后一位与最后一位相加..int i=lengthA-1;int j=lengthB-1;int carry=0;int bit_Sum=0;char bitCurrent;while (j>=0) //先加最低位{bit_Sum=(a[i]-'0'+b[j]-'0')+carry; //计算每一位增加的数字if (bit_Sum/10>=1) //1+1//有进位,自己变为2的余数{//之间记录到a[i]里面carry=bit_Sum/10; //进位bitCurrent=('0'+bit_Sum%10);str=bitCurrent+str;}else{carry=0;bitCurrent=('0'+bit_Sum); //convert to charstr=bitCurrent+str;}i--;j--;}while (i>=0){bit_Sum=(a[i]-'0')+carry;if (bit_Sum/10>=1) //1+1{//之间记录到a[i]里面carry=bit_Sum/10; //进位bitCurrent=('0'+bit_Sum%10); //1+1=2,+1=3str=bitCurrent+str;}else{carry=0; //没有进位bitCurrent=('0'+bit_Sum);str=bitCurrent+str;}i--;}if (carry>0){bitCurrent=('0'+carry);str=bitCurrent+str;return str;}return str;}
0 0
- Multiply Strings
- Multiply Strings
- Multiply Strings
- Multiply Strings
- Multiply Strings
- Multiply Strings
- Multiply Strings
- Multiply Strings
- Multiply Strings
- Multiply Strings
- Multiply Strings
- Multiply Strings
- Multiply Strings
- Multiply Strings
- Multiply Strings
- Multiply Strings
- Multiply Strings
- Multiply Strings
- java正则匹配
- JAVA自动装箱拆箱以及装箱时的缓存问题
- [转载]Integer.parseInt()和这个Integer.valueOf()的详解
- memcpy函数介绍
- svg文件字符串读取到QPushButton上
- Multiply Strings
- Linux 之Cut命令详解
- 干货 IOS设备分辨率一览
- Combination Sum III
- jsp怎样实现动态表格
- 黑马程序员_C语言基础_指针
- 对文东山老师移植最新U-boot的总结
- 小胖说事34-----iOS UIImageView 的contentMode属性应用
- eclipse操作经验总结