leetcode解题报告(26):Add Binary
描述
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的更多相关文章
- leetcode解题报告(2):Remove Duplicates from Sorted ArrayII
描述 Follow up for "Remove Duplicates": What if duplicates are allowed at most twice? For ex ...
- LeetCode解题报告:Linked List Cycle && Linked List Cycle II
LeetCode解题报告:Linked List Cycle && Linked List Cycle II 1题目 Linked List Cycle Given a linked ...
- LeetCode 解题报告索引
最近在准备找工作的算法题,刷刷LeetCode,以下是我的解题报告索引,每一题几乎都有详细的说明,供各位码农参考.根据我自己做的进度持续更新中...... ...
- LeetCode解题报告汇总! All in One!
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 把自己刷过的所有题目做一个整理,并且用简洁的语言概括了一下思路,汇总成了一个表格. 题目 ...
- LeetCode练题——67. Add Binary
1.题目 67. Add Binary——easy Given two binary strings, return their sum (also a binary string). The inp ...
- 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 ...
- 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 ...
- LeetCode解题报告:Binary Tree Postorder Traversal
Given a binary tree, return the postorder traversal of its nodes' values. For example:Given binary t ...
- 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 ...
随机推荐
- HDU6037 Expectation Division 期望、高维前缀和
传送门 设\(f_x\)表示答案,那么\(f_x = \frac{\sum\limits_{d \mid x} f_d}{\sigma_0(x)} + 1 = \frac{\sigma_0(x) + ...
- Debian 下忘记root密码的特殊修改方式
当系统开机进入 grub页面时,在启动条目上按下键盘的 e 进入编辑 找到 linux 开头的一行,类似下面这样 linux /boot/vmlinux-4.9.0.8-amd64 root=/dev ...
- navicat 连接 mysql 提示Client does not support authentication protocol requested by server错误
安装完mysql后,命令行登录没问题,但是用Navicat连接出现提示性错误.Mysql版本为:8.0.15 命令如下: 1.use mysql; 2.alter user 'root'@'local ...
- 在本地库不连接远远程库的情况下操作远程库-----sql server
--创建链接服务器 --前面都是固定不变的------q:自己随便起-----38.107.111.185:远程服务器的ip exec sp_addlinkedserver 'q', ' ', 'SQ ...
- 2.Vue 获取企业微信的Code并把Code发送的后台进行验证
1 . 在企业微信配置请求的页面写入下面代码 mounted() { //获取微信请求的的Code let code = this.$route.query.code; if (code) { thi ...
- PowerShell命令批量添加、导出AD用户
导入单个AD用户命令 New-ADUser -Name "周八" -Surname "周" -GivenName "八"-SamAccoun ...
- .net 调用存储过程
语言:C# 一.调用带输入参数的存储过程 首先自然是在查询分析器里创建一个存储过程喽~~ 如下所示: create proc proc_1 @uid int, @pwd varchar(255) ...
- JAVA - Windows下JDK默认安装的配置参数
JDK版本1.8 JAVA_HOME C:\Program Files\Java\jdk1.8.0_60 CLASSPATH .;%%JAVA_HOME%%\lib;%%JAVA_HOME%%\lib ...
- FreeRTOS任务运行时间信息统计
相关宏的设置 configGENERATE_RUN_TIME_STATS //使能 portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() //配置一个高精度定时器/计数器提 ...
- 如何导出ane所需的swc
来源:http://blog.sina.com.cn/s/blog_6471e1bb01012ard.html 打包.ane文件的时候需要用到ActionScript的扩展库(swc文件),那么如何生 ...