lintcode-408-二进制求和
2017-08-14 09:14
295 查看
408-二进制求和
给定两个二进制字符串,返回他们的和(用二进制表示)。
样例
a = 11b = 1
返回 100
标签
二进制 字符串处理 脸书思路
先相加,在处理进位,为了方便操作,将选字符串翻转,使低位位于数组前端code
class Solution { public: /* * @param a: a number * @param b: a number * @return: the result */ string addBinary(string a, string b) { // write your code here int sizeA = a.size(), sizeB = b.size(); if (sizeA <= 0 || sizeB <= 0) { return string(); } reversalString(a); reversalString(b); string result; int i = 0, carry = 0; for (i = 0; i<sizeA && i<sizeB; i++) { result += '0' + (a[i] - '0' + b[i] - '0'); } for (; i < sizeA; i++) { result += a[i]; } for (; i < sizeB; i++) { result += b[i]; } for (i = 0; i < result.size(); i++) { int temp = result[i] - '0' + carry; if (temp == 2) { carry = 1; result[i] = '0'; } else if (temp == 3) { carry = 1; result[i] = '1'; } else { carry = 0; result[i] = temp + '0'; } } if (carry == 1) { result += '1'; } reversalString(result); return result; } void reversalString(string &str) { for (int i = 0; i < str.size() / 2; i++) { swap(str[i], str[str.size() - 1 - i]); } } };
相关文章推荐
- LintCode(容易)二进制求和
- LintCode Add Binary 二进制求和
- lintcode add-binary 二进制求和
- lintcode 容易题:Add Binary 二进制求和
- LintCode之167 链表求和
- Lintcode---区间求和 I
- LintCode 链表求和 问题解答
- LintCode:链表求和
- Lintcode167.链表求和C++
- 【LintCode-408】二进制求和(Java实现)
- lintcode-【简单题】链表求和
- lintcode--平面范围求和-不可变矩阵(leetcode--Range Sum Query 2D)
- LintCode | 408. 二进制求和
- Lintcode 408 二进制求和
- lintcode循环数组之连续子数组求和
- lintcode add-two-numbers 链表求和
- LintCode 207. 区间求和 II
- LintCode:区间求和
- LINTCODE——区间求和II
- lintcode刷题--连续子数组求和