二进制求和
2017-02-21 17:33
288 查看
二进制求和
题目要求:![[1]]http://static.zybuluo.com/liu-matthew/x3gzdg2kegu0k81kgo1cr7rh/%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_20160821124353.png][1]
6.1 version one
string result = ""; int c = 0, num = 0; int i = a.size() - 1, j = b.size() - 1; for (; i >= 0 && j >= 0; i--, j--) { num = (a[i] - '0') + (b[j] - '0') + c; c = num / 2; num = num % 2; result += ('0' + num); } for (; i >= 0; i--) { num = (a[i] - '0') + c; c = num / 2; num = num % 2; result += ('0' + num); } for (; j >= 0; j--) { num = (b[j] - '0') + c; c = num / 2; num = num % 2; result += ('0' + num); } if (c != 0) { result += ('0' + c); } i = 0; j = result.size() - 1; while (i < j) { char temp = result[i]; result[i] = result[j]; result[j] = temp; i++; j--; } return result;
6.2 version two
算法描述:string addBinary(string& s1, string& s2) 1:将s1和s2变为等长字符串,较短的在前置位补0; 2:string temp = s1 & s2; 97c3 string carry;carry数组为进位统计数组。 如:s1 = 101, s2 = 001; 则 temp = 100, carry = 010; 3:s1 = temp; s2 = c; 递归调用addBinary(s1,s2); 4: if(carry == 0) return s1;
相关文章推荐
- 微软一面:输入两个数,相加求和,二进制输出
- LeetCode 67. 二进制求和
- 源码,反码,补码,二进制 反码求和
- (LeetCode)Add Binary --- 二进制求和
- 题目:二进制求和
- LIntCode-二进制求和
- 二进制求和
- lintcode-408-二进制求和
- LintCode【容易】二进制求和
- LintCode算法题解——奇偶分割数组、二进制中1个数、反转整数、加一、排序数组转换为高度最小的二叉搜索树、二进制求和
- 二进制求和-LintCode
- lintcode 二进制求和 给定两个二进制字符串,返回他们的和(用二进制表示)。
- LintCode(容易)二进制求和
- 【LintCode-408】二进制求和(Java实现)
- C语言学习3-1:成绩检测,使用while和do...while得到九九乘法,1-1/2+1/3-1/4 .......+1/10求和,输入10进制打印2进制,求素数,猜随机产生的数字,16进制转二进制,
- lintcode 容易题:Add Binary 二进制求和
- 二进制求和
- 408 - 二进制求和
- lintCode(408)——二进制求和
- 二进制求和