这个题目相对有点奇怪,题目如下:

Given two binary strings, return their sum (also a binary string).

For example,

a = "11"

b = "1"

Return "100".

可能是我思路的问题吧,我之前是在考虑先将string转成int或者double,然后将二进制转为十进制进行计算,最后再将这个十进制转为二进制再转为string返回。这个思路本来是没问题的。但是。。。。。在最后一个测试用例中,他给了一个超长的二进制串,其实也是,一个长度为100的string是很正常的,但是如果这个长度为100的string是一个二进制数,这个数字就已经挺可怕的了。我又不想强行引入big num,所以我写了一套string的二进制加法器。

题解如下:

class Solution {
public:
string addBinary(string a, string b)
{
reverse(a.begin(), a.end());
reverse(b.begin(), b.end()); int i = 0;
int flag = 0;
int lenA = a.length();
int lenB = b.length(); string c = "";
while (i < lenA && i < lenB)
{
if (a[i] - '0' + b[i] - '0' + flag >= 2)
{
c += (a[i] - '0' + b[i] - '0' + flag) % 2 + '0';
flag = 1;
}
else
{
c += a[i] - '0' + b[i] - '0' + flag + '0';
flag = 0;
}
i++;
} while (i < lenA)
{
if (a[i] - '0' + flag == 2)
{
flag = 1;
c += "0";
}
else
{
c += a[i] - '0' + flag + '0';
flag = 0;
}
i++;
} while (i < lenB)
{
if (b[i] - '0' + flag == 2)
{
flag = 1;
c += "0";
}
else
{
c += b[i] - '0' + flag + '0';
flag = 0;
}
i++;
} if (flag == 1)
{
c += "1";
} reverse(c.begin(), c.end()); return c;
}
};

在这里用flag来表示前一位是否进位,这里要注意的就是有可能本身的两位加上进位的flag会出现3的情况,所以要考虑取余。其余的都很简单。

[leetcode] 16. Add Binary的更多相关文章

  1. LeetCode 面试:Add Binary

    1 题目 Given two binary strings, return their sum (also a binary string). For example,a = "11&quo ...

  2. [LeetCode] 67. Add Binary 二进制数相加

    Given two binary strings, return their sum (also a binary string). The input strings are both non-em ...

  3. LeetCode 67. Add Binary (二进制相加)

    Given two binary strings, return their sum (also a binary string). For example,a = "11"b = ...

  4. 【leetcode】Add Binary

    题目简述: Given two binary strings, return their sum (also a binary string). For example, a = "11&q ...

  5. Java for LeetCode 067 Add Binary

    Given two binary strings, return their sum (also a binary string). For example, a = "11" b ...

  6. LeetCode 67. Add Binary

    Given two binary strings, return their sum (also a binary string). For example,a = "11"b = ...

  7. Java [Leetcode 67]Add Binary

    题目描述: Given two binary strings, return their sum (also a binary string). For example,a = "11&qu ...

  8. LeetCode(56)-Add Binary

    题目: Given two binary strings, return their sum (also a binary string). For example, a = "11&quo ...

  9. (String) leetcode 67. Add Binary

    Given two binary strings, return their sum (also a binary string). The input strings are both non-em ...

随机推荐

  1. mybatis3 @SelectProvider

    mybatis3中增加了使用注解来配置Mapper的新特性,本篇文章主要介绍其中几个@Provider的使用方式,他们是:@SelectProvider.@UpdateProvider.@Insert ...

  2. Jakarta项目

    Jakarta项目是ASF(The Apache Software Foundation)的一部分.ASF是一个非赢利组织,她鼓励基于开放的软件许可下进行合作.注重实效的开发,并提供各个领域的高质量软 ...

  3. nat 类型及打洞原理

    nat 类型分4种 1.全锥形 full cone A 与 主机B交互,nat转换 A的内部地址及端口为  ip1 port1,ip1和port1为对外地址,任何机器能访问. 2.ip 受限制(对B而 ...

  4. Escape(状态压缩+最大流,好题)

    Escape http://acm.hdu.edu.cn/showproblem.php?pid=3605 Time Limit: 4000/2000 MS (Java/Others)    Memo ...

  5. Finding Hotels

    Finding Hotels http://acm.hdu.edu.cn/showproblem.php?pid=5992 Time Limit: 2000/1000 MS (Java/Others) ...

  6. 关于jni调用报UnsatisfiedLinkError的可能

    一.说明 最近在做一个项目,需要使用java去调本地动态连接库,之前做测试的时候直接用pojo进行测试,是能够正常调用的.后面项目需要将接口封装为REST api,所以在spring boot上面开发 ...

  7. MongoDB安装(一)

    详细图解,记录 win7 64 安装mongo数据库的过程.安装的版本是 MongoDB-win32-x86_64-2008plus-ssl-3.4.1-signed. 示例版本:mongodb-wi ...

  8. mysql优化概述2

    一.索引的概念 利用关键字,就是记录的部分数据(某个字段,某些字段,某个字段的一部份),建立与记录位置的对应关系,就是索引.索引的关键字一定是排序的. 二.索引的类型 mysql支持四种索引: 1.主 ...

  9. Halcon的一维条码解码步骤和解码技巧

    一.图像预处理和条码增强 对比度太低:scale_image(或使用外部程序scale_image_range),增强图像的对比度. 图像模糊:emphasize锐化图像,使条码看起来更清晰. 深色背 ...

  10. bzr: ERROR: These branches have diverged. Use the missing command to see how.

    这个错误是在提交之后执行bzr pull时出现的,先uncommit,再pull就可以了.