67. Add Binary

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

For example,
a = "11"
b = "1"
Return "100".

两个字符串存储二进制数,进行二进制加法,返回相加之后的结果。

代码如下:

 class Solution {
public:
string addBinary(string a, string b) {
int flag = ;
int la = a.size() - ;
int lb = b.size() - ;
while(la >= && lb >= )
{
if((int)(a[la]-'') + (int)(b[lb]-'') + flag > )
{
if((int)(a[la]-'') + (int)(b[lb]-'') + flag == )
{
la > lb ? a[la] = '' : b[lb] = '';
}
else
{
la > lb ? a[la] = '' : b[lb] = '';
}
flag = ;
}
else
{
if((int)(a[la]-'') + (int)(b[lb]-'') + flag == )
{
la > lb ? a[la] = '' : b[lb] = '';
}
else
{
la > lb ? a[la] = '' : b[lb] = '';
}
flag = ;
}
la --;
lb --;
}
if(flag == )
{
return la > lb ? a : b;
}
if(a.size() > b.size() && flag == )
{
for(int j = a.size()-b.size()-; j >= ; j--)
{
if((int)(a[j]-'') + flag > )
{
if((int)(a[j]-'') + flag == )
{
a[j] = '';
}
else
{
a[j] = '';
}
flag =;
}
else
{
if((int)(a[j]-'') + flag == )
{
a[j] = '';
}
else
{
a[j] = '';
}
flag = ;
break;
}
}
if(flag == )
{
return "" + a;
}
return a;
}
else
{
for(int j = b.size()-a.size()-; j >= ; j--)
{
if((int)(b[j]-'') + flag > )
{
if((int)(b[j]-'') + flag == )
{
b[j] = '';
}
else
{
b[j] = '';
}
flag =;
}
else
{
if((int)(b[j]-'') + flag == )
{
b[j] = '';
}
else
{
b[j] = '';
}
flag = ;
break;
}
}
if(flag == )
{
return "" + b;
}
return b;
}
}
};

这样写代码太乱,可以先进行对齐操作,将短的字符串通过填充‘0’来使两个字符串长度相同。

leetcode 67的更多相关文章

  1. # Leetcode 67:Add Binary(二进制求和)

    Leetcode 67:Add Binary(二进制求和) (python.java) Given two binary strings, return their sum (also a binar ...

  2. LeetCode(67)题解: Add Binary

    https://leetcode.com/problems/add-binary/ 题目: Given two binary strings, return their sum (also a bin ...

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

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

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

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

  5. Java实现 LeetCode 67 二进制求和

    67. 二进制求和 给定两个二进制字符串,返回他们的和(用二进制表示). 输入为非空字符串且只包含数字 1 和 0. 示例 1: 输入: a = "11", b = "1 ...

  6. Leetcode 67 Add Binary 大数加法+字符串处理

    题意:两个二进制数相加,大数加法的变形 大数加法流程: 1.倒置两个大数,这一步能使所有大数对齐 2.逐位相加,同时进位 3.倒置两个大数的和作为输出 class Solution { public: ...

  7. LeetCode 67. Add Binary

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

  8. Java [Leetcode 67]Add Binary

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

  9. leetcode[67] Plus One

    题目:对一个用vector存的数字进行加1,然后返回加1后的值. 一次就在oj上通过了. 就是进位加上当前位如果大于9,那就当前位等于0: 随后进位还为1的话就是在数组前面插入一个1: class S ...

随机推荐

  1. centos更改默认语言

    centos7以下版本: vim /etc/sysconfig/i18n 7以上版本:

  2. i++与++i 辨析

    i++:先赋值在自加: ++i:先自加在赋值: 备注:在赋值运算中有区别,单独使用没有区别 ( 例子1:单独使用 for(int i=0;i<10;i++){ } for(int i=0;i&l ...

  3. python第一个hello world注意问题!!

    如果你第一次写python代码,想写一个通常的hello world ,那么你需要注意这个hello world的写法,这和python的版本有直接关系!!! Python 3.x: print('h ...

  4. 修改VNC访问的密码

    :vncserver :iptables -I INPUT -p tcp --dport -j ACCEPT 客户端方式 :iptables -I INPUT -p tcp --dport -j AC ...

  5. C#引用类型详细剖析(转)

    C#引用类型和值类型的区别——值类型和引用类型在内存中的部署 经常听说,并且经常在书上看到:值类型部署在栈上,引用类型部署在托管堆上.实际上并没有这么简单. MSDN上说:托管堆上部署了所有引用类型. ...

  6. C++学习35 模板中的函数式参数

    C++对模板类的支持比较灵活,模板类的参数中除了可以有类型参数,还可以有普通参数.例如: template<typename T, int N> class Demo{ }; N 是一个普 ...

  7. 创建一个hibernate helloword

    1.下载hibernate包 http://hibernate.org/orm/ 点download下载最终版 安装hibernate插件hibernatetools 2.创建一个java工程 导入必 ...

  8. 一些代码 I (斐波那契、for...else...、try和return、classmethod、统计个数)

    1. 斐波那契 from itertools import islice def fib(): a, b = 0, 1 while True: yield a a, b = b, a+b print ...

  9. 502 Bad Gateway什么意思

    http://baike.baidu.com/link?url=U2ijg5T5PG_tTkY67mqfx07co7qGqvMB32rbLwq4S2ThBSRIWWvU76Y0Mb8Z3z6nbViN ...

  10. android 如何设置背景的透明度

    半透明<Button android:background="#e0000000" ... />透明<Button android:background=&quo ...