Multiply Strings(字符串乘法模拟,包含了加法模拟)
2014-11-24 12:30
344 查看
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.
要求:字符串表示的数字可能无穷大,并且非负。
Note: The numbers can be arbitrarily large and are non-negative.
要求:字符串表示的数字可能无穷大,并且非负。
class Solution { private: vector<string> tempStrs; public: string add(string num1,string num2) { int n1=num1.size(); int n2=num2.size(); int i=n1-1;int j=n2-1; string resStr; int jinwei=0; while (i>=0&&j>=0) { int temp=(num1[i]-'0')+(num2[j]-'0')+jinwei; jinwei=temp>=10?1:0; temp%=10; resStr.push_back(temp+'0'); --i; --j; } if(i>=0){ while (i>=0) { int temp=(num1[i]-'0')+jinwei; jinwei=temp>=10?1:0; temp%=10; resStr.push_back(temp+'0'); --i; } } else if(j>=0){ while (j>=0) { int temp=(num2[j]-'0')+jinwei; jinwei=temp>=10?1:0; temp%=10; resStr.push_back(temp+'0'); --j; } } if(jinwei!=0){ resStr.push_back(jinwei+'0'); } reverse(resStr.begin(),resStr.end()); return resStr; } string multiply(string num1, string num2) { if(num1.empty()||num2.empty()) return ""; if(num1=="0"||num2=="0") return "0"; int jinwei=0; int n1=num1.size(); int n2=num2.size(); if(n2>n1){ string temp=num1; num1=num2; num2=temp; n1=num1.size(); n2=num2.size(); } int time=0; string tempStr; string res; for(int i=n2-1;i>=0;--i) { tempStr.clear(); jinwei=0; for(int j=n1-1;j>=0;--j) { int temp=(num1[j]-'0')*(num2[i]-'0')+jinwei; jinwei=temp>=10?(temp/10):0; temp=temp%10; tempStr.push_back(temp+'0'); } if(jinwei!=0){ tempStr.push_back(jinwei+'0'); } reverse(tempStr.begin(),tempStr.end()); for(int q=0;q<time;++q){ tempStr.push_back('0'); } tempStrs.push_back(tempStr); ++time; } if(tempStrs.size()>1){ res=add(tempStrs[0],tempStrs[1]); for (int i=2;i<tempStrs.size();++i) { res=add(res,tempStrs[i]); } return res; }else { return tempStrs[0]; } } };
相关文章推荐
- String——add_binary(字符串模拟加法)和multiply-strings(字符串模拟乘法)
- 【002】链表或字符串模拟加法/加一/乘法
- LeetCode-Multiply Strings-字符串乘法-大整数-字符串操作
- Multiply Strings 两个字符串的乘法
- 整数大数模拟 高精度加法 高精度减法 高精度乘法 高精度除法 c/c++ java
- leetcode Multiply Strings 字符串的乘积问题
- PAT 一元多项式的乘法与加法运算(20)(模拟计算过程)
- [LeetCode] Multiply Strings 字符串相乘
- Multiply Strings 两个字符串代表数字相乘@LeetCode
- [LeetCode] Multiply Strings 字符串相乘
- uva 10523 Very Easy !!! 大数模拟加法和乘法
- 用加法模拟乘法
- 字符串实现加法和乘法
- Exe 3 —— n^n幂和 (长整数的乘法和加法,以及对于字符数组和字符串的理解)
- LeetCode-------43. Multiply Strings(字符串的乘法运算)
- Java字符串的大数加法和乘法实现
- LeetCode Multiply Strings 高精度乘法C++实现
- [LeetCode] Multiply Strings 字符串相乘
- 大数的乘法 Multiply Strings
- Leet Code 43 Multiply Strings - 字符串表示的数相乘 - Java