描述

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

For example,

a = "11"

b = "1"

Return "100".

分析

这道题没做出来。。

逛了评论区才写出来的,代码写得很简洁

https://discuss.leetcode.com/topic/8981/short-code-by-c

我之前的思路是对两个string的每一位都做处理,比如,如果两个都是1,carry就为1,tmp(当前位的值)就为0;如果只有一个1,carry就为0,tmp为1;如果全为0,carry和tmp就都为0.

然后发现来自低位的进位要先初始化一次,于是就对最低位单独处理,得到carry的初始值。这样写的话太麻烦了,于是转而求助讨论区。

我参照的代码只用一个变量carry来同时处理进位和当前位。由于string只包含0和1,因此每次都将两个string的当前位变为整型加到carry变量。

比较有趣的地方是while循环的第三个条件,这个条件只有在两个string都遍历结束时才会用到(也就是判断最高位是否有进位),如果有进位,那么carry的值是为1,条件成立,直接把这个1加到最后。

由于整个操作都是直接往待返回的string的末尾加,因此要调用reverse函数逆置。

代码如下:

class Solution {
public:
string addBinary(string a, string b) {
string ret;
int i = a.size() - 1;
int j = b.size() - 1;
int carry = 0;
while(i >= 0 || j >= 0
|| carry > 0){ //仅用来处理最高位有进位的情况
if(i >= 0){
carry += a[i] - '0';
--i;
}
if(j >= 0){
carry += b[j] - '0';
--j;
}
ret += (carry % 2) + '0';
carry /= 2;
}
reverse(ret.begin(),ret.end());
return ret;
}
};

leetcode解题报告(26):Add Binary的更多相关文章

  1. leetcode解题报告(2):Remove Duplicates from Sorted ArrayII

    描述 Follow up for "Remove Duplicates": What if duplicates are allowed at most twice? For ex ...

  2. LeetCode解题报告:Linked List Cycle && Linked List Cycle II

    LeetCode解题报告:Linked List Cycle && Linked List Cycle II 1题目 Linked List Cycle Given a linked ...

  3. LeetCode 解题报告索引

    最近在准备找工作的算法题,刷刷LeetCode,以下是我的解题报告索引,每一题几乎都有详细的说明,供各位码农参考.根据我自己做的进度持续更新中......                        ...

  4. LeetCode解题报告汇总! All in One!

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 把自己刷过的所有题目做一个整理,并且用简洁的语言概括了一下思路,汇总成了一个表格. 题目 ...

  5. LeetCode练题——67. Add Binary

    1.题目 67. Add Binary——easy Given two binary strings, return their sum (also a binary string). The inp ...

  6. LeetCode解题报告——Convert Sorted List to Binary Search Tree & Populating Next Right Pointers in Each Node & Word Ladder

    1. Convert Sorted List to Binary Search Tree Given a singly linked list where elements are sorted in ...

  7. LeetCode解题报告—— Unique Binary Search Trees & Binary Tree Level Order Traversal & Binary Tree Zigzag Level Order Traversal

    1. Unique Binary Search Trees Given n, how many structurally unique BST's (binary search trees) that ...

  8. LeetCode解题报告:Binary Tree Postorder Traversal

    Given a binary tree, return the postorder traversal of its nodes' values. For example:Given binary t ...

  9. LeetCode解题报告—— Reverse Linked List II & Restore IP Addresses & Unique Binary Search Trees II

    1. Reverse Linked List II Reverse a linked list from position m to n. Do it in-place and in one-pass ...

随机推荐

  1. [SOJ #538]好数 [CC]FAVNUM(2019-8-6考试)

    题目大意:给定$n$个正整数,求$[l,r]$中第$k$小的”好数“.$l,r\leqslant10^{18},n\leqslant62$,出现的其他数均$\leqslant10^{50}$ 好数定义 ...

  2. .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态

    原文:.NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态 在 Windows 系统中,一段时间不操作键盘和鼠标,屏幕便会关闭,系统会进入睡眠状态.但有些程序(比如游戏.视频和演示文稿)在运行过程中应该 ...

  3. iframe 边框(界面技术)

    一.iframe 的边框很难看,想去掉,使用CSS的border:none在IE(8)上没有,只能用iframe 自带属性frameBorder="0"来设置. 二.iframe与 ...

  4. js 页面技巧

    需要获取页面上固定的某个按钮的属性值.我们需要在页面加载完的第一刻将值存储到定义的变量,防止用户更改页面样式读不出当前元素.如果页面刷新会重置当前属性 <body> <input v ...

  5. mysql开启二进制日志

    打开xhell进入系统 进入mysql配置文件目录 执行 cd /etc/mysql 首先找到my.cnf这个配置文件,然后使用vim进入文件编辑 放开我标记的地方. 注意我标记的地方,其实这个就是在 ...

  6. Widget Size and Position !!!!!!!!!!!!!!!!!!

    https://medium.com/@diegoveloper/flutter-widget-size-and-position-b0a9ffed9407 I have read many ques ...

  7. SVN 提交失败 非LF行结束符

    来源:http://programerni.diandian.com/post/2012-09-06/40037220960 我使用svn一直很顺利,今天在改了两个地方之后,提交时输入了两句话(只有两 ...

  8. django获取数据queryset中的filter选项

    2.条件选取querySet的时候,filter表示=,exclude表示!=. querySet.distinct() 去重复__exact 精确等于 like 'aaa' __iexact 精确等 ...

  9. httpclient4.5.2 Post请求支持http和https

    先导入所需的jar包,pom.xml <dependency> <groupId>org.springframework.boot</groupId> <ar ...

  10. simpleDateFormat中格式化时间需要注意的问题

    student.getDateProperty("business","birth","yyyy-MM-dd",null)测试时  时间格式 ...