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. 监控系统一些告警方式对比:短信、Email手机端、IM

    一.缘由: 对于运维来说,监控告警是很重要的一环,告警讲究及时性,所以这里讨论下一些常见告警方式的优劣. 二.告警方式: 1.短信SMS 短信网关通知是一种最直接.最有效的通知方式,当然成本最高. 适 ...

  2. 防篡改php文件校验程序

    <?php /** * 校验线上源文件是否和本地的一致 * User: Administrator * Date: 2015/11/26 * Time: 9:30 */ include_once ...

  3. php序列化,反序列化

    serialize("数组"); //序列化的函数 序列化示范:serialize(array('1'=>1235622,'2'=>'4142122')); unser ...

  4. 全文检索引擎Solr系列——solr入门

    下载4.8.0版本,下载地址:http://archive.apache.org/dist/lucene/solr/4.8.0/ 解压后,得到文件夹视图如下: 解压缩solr,在example目录有s ...

  5. Linux重置mysql密码(转载)

    From:http://hi.baidu.com/mcspring/item/6358ee27afe7e1c8a5275ab7 首先,必须拥有MySQL操作的所有权限: 其次,停止MySQL服务: / ...

  6. source insight新建工程,添加文件时出现“no files found”

    source insight使用也有一年多时间了,今天出现建工程后添加文件“no files found” 百思不得姐: 后面发现是原工程命名时出现非法字符.重新命名就ok了. 切记切记

  7. JAVA中日期处理

    一.日期和long类型数据的相互转换 public class Hello { public static void main(String[] args) throws Exception { // ...

  8. jquery ui autocomplete combox格式设置

    <style> .custom-combobox {//设置输入框格式 position: relative; display: inline-block; width: 62%; } . ...

  9. oracle插入主键数据、sequence和触发器

    一.创建表:   id number;并设为主键 name VARCHAR2(20 BYTE) 二. 插入数据 2.1 insert into addservice.test_table (id,na ...

  10. java中的 json 处理包

    Jackson 以前很火 Fastjson 阿里巴巴出品