LeetCode Multiply Strings
2014-06-19 10:35
363 查看
题目
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.
字符串模拟大数相乘,按一般的数学相乘方法模拟操作
代码:
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.
字符串模拟大数相乘,按一般的数学相乘方法模拟操作
代码:
class Solution { int carry; public: int toNum(char c) //字符到数 { return c-'0'; } char toChar(int n) //数到字符 { return '0'+n; } char charMul(char c1,char c2) //两个字符表示的数相乘 { int n=toNum(c1)*toNum(c2)+carry; carry=n/10; return toChar(n%10); } string scMul(string s,char c,int n) //字符串表示的数和字符表示的一位数相乘,n为字符所在的位,补0用 { string ans; if(c=='0') return "0"; for(int i=0;i<n;i++) ans.push_back('0'); //补低位的0 carry=0; int len=s.size(); for(int i=0;i<len;i++) ans.push_back(charMul(s[i],c)); if(carry!=0) { ans.push_back(toChar(carry)); carry=0; } return ans; } string add(string s1,string s2) //两个字串表示的数求和 { string ans; int dig,car=0; int len1=s1.size(),len2=s2.size(); int i=0,j=0; while(i<len1||j<len2) { dig=car; if(i<len1) dig+=toNum(s1[i++]); if(j<len2) dig+=toNum(s2[j++]); car=dig/10; dig%=10; ans.push_back(toChar(dig)); } if(car>0) ans.push_back(toChar(car)); return ans; } string multiply(string num1, string num2) { string ans,temp; reverse(num1.begin(),num1.end()); reverse(num2.begin(),num2.end()); if(num1.size()<num2.size()) { temp=num1; num1=num2; num2=temp; } int len=num2.size(); for(int i=0;i<len;i++) { temp=scMul(num1,num2[i],i); ans=add(ans,temp); } reverse(ans.begin(),ans.end()); return ans; } };
相关文章推荐
- Java [Leetcode 43]Multiply Strings
- 【Leetcode】【Medium】Multiply Strings
- Leetcode: Multiply Strings
- LeetCode(43)Multiply Strings
- [LeetCode] Multiply Strings
- [leetcode]Multiply Strings @ Python
- LeetCode43 Multiply Strings
- [LeetCode] Multiply Strings
- 【LeetCode练习题】Multiply Strings
- Multiply Strings--LeetCode
- LeetCode: Multiply Strings
- Leetcode-Multiply Strings
- LeetCode_43---Multiply Strings
- LeetCode Multiply Strings
- [Leetcode 43, medium] Multiply Strings
- [leetcode] Multiply Strings
- Leetcode Multiply Strings
- leetcode 日经贴,Cpp code -Multiply Strings
- leetcode Multiply Strings
- LeetCode:Multiply Strings