leetcode multiply strings
来源:互联网 发布:jdbc连接数据库代码 编辑:程序博客网 时间:2024/06/05 04:45
class Solution {public: string uniMul(int v, string num2,int bias){ string ret = ""; for(int i = 0; i < bias; ++i){ ret += "0"; } int len2 = num2.length(); int carry = 0; for(int i = len2 - 1; i >= 0; --i){ int tmp = v * (num2[i] - '0'); tmp += carry; ret += (tmp % 10) + '0'; carry = tmp / 10; } while(carry > 0){ ret += carry % 10 + '0'; carry /= 10; } return ret; } string add(string ret, string num2){ int len1 = ret.length(), len2 = num2.length(); string tmp = ""; int idx = 0, carry = 0; while(idx < len1 && idx < len2){ int tmpv = (ret[idx] - '0') + (num2[idx] - '0') + carry; tmp += (tmpv % 10) + '0'; carry = tmpv / 10; ++idx; } if(idx < len1){ //idx >= len2 for(int tmpidx = idx; tmpidx < len1; ++tmpidx){ int tmpv = (ret[tmpidx] - '0') + carry; tmp += (tmpv % 10) + '0'; carry = tmpv / 10; } } else if(idx < len2){ for(int tmpidx = idx; tmpidx < len2; ++tmpidx){ int tmpv = (num2[tmpidx] - '0') + carry; tmp += (tmpv % 10) + '0'; carry = tmpv / 10; } } while(carry > 0){ int tmpv = carry % 10; tmp += tmpv + '0'; carry /= 10; } return tmp; } bool checkZero(string&ret){ //bool allZero = true; int len = ret.length(); for(int i = 0; i < len; ++i){ if(ret[i] != '0'){ return false; } } return true; } string multiply(string num1, string num2) { string ret = ""; int len1 = num1.length(), len2 = num2.length(); for(int i = len1 - 1; i >= 0; --i){ string tmpret = uniMul(num1[i] - '0', num2, len1 - i - 1); ret = add(ret, tmpret); } int len = ret.length(); int left = 0, right = len - 1; while(left < right){ char tmp = ret[right]; ret[right] = ret[left]; ret[left] = tmp; ++left; --right; } if(checkZero(ret)){ return "0"; } return ret; }};
错误1:
1. 没有处理前导零的情况
2. add函数的返回值错误
0 0
- 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
- [LeetCode] Multiply Strings
- android use-sdk配置备忘
- 数据库学习笔记
- android studio 问题解决记
- 【Java并发编程】之四:守护线程与线程阻塞的四种情况
- activiti单元测试调试
- leetcode multiply strings
- poj 3046 Ant Counting
- [转载]加密算法原理与种类及破解浅谈
- 【SICP练习】136 练习3.67
- switch一道面试题
- 使用正则表达式匹配模式(验证电子邮件地址)
- C++ 类缺省构造函数调用带参数的构造函数
- 【凯子哥带你夯实应用层】新手必备的常用代码片段整理(二)
- 导演、场景、层、精灵