LeetCode每日一题--二进制求和
2020-03-15 18:21
274 查看
【前言】坚持日更LeetCode刷题系列
不积跬步,无以至千里;不积小流,无以成江海。愿与诸君共勉!
【题目】67.二进制求和
题目描述:给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1 和 0。
示例:
示例 1: 输入: a = "11", b = "1" 输出: "100" 示例 2: 输入: a = "1010", b = "1011" 输出: "10101"
思路一:如果看过我上题的朋友,会感到此题非常的熟悉,那么具体思路如下,我们先将字符串转化为整数的形式,再对其进行加法处理,通过
从后往前遍历列表的方式,对于‘2’以及‘3’(有朋友可能会疑惑怎么会出现‘3’,别急,请接着看下去)我们将
其分别置为‘0’和‘1’,并对其前一位数字进行加一操作。
注意因为是对前一位数字进行加一操作,因此我们循环遍历到第二位数字,并对第一位数字单独进行判断操作。具体代码如下:
class Solution(object): def addBinary(self, a, b): """ :type a: str :type b: str :rtype: str """ ''' 说明:对于其中类型转化问题,可以自行百度相关的知识。 ''' a = int(a) b = int(b) result = list(str(a+b)) for i in range(len(result)-1,0,-1): #从后往前遍历 if(result[i] == '2' ): #对数码位为2的情况进行处理 result[i] = '0' result[i-1] = str(int(result[i-1])+ 1) elif(result[i] == '3'): #对数码位为3的情况进行处理 result[i] = '1' result[i-1] = str(int(result[i-1])+ 1) if result[0] == '2': #对第一位数字单独进行考虑 result[0] = '0' result.insert(0,'1') elif result[0] == '3': result[0] = '1' result.insert(0,'1') result = ''.join(result) return result
运行结果:
思路二:由于是二进制问题,可能有朋友会想到通过位操作的方法来实现,那其中的逻辑是怎样的呢?那让我们来尝试下。具体代码如下(参考自LeeCode官方解答):
class Solution(object): def addBinary(self, a, b): """ :type a: str :type b: str :rtype: str """ a = int(a,2) #将其转化为整数 b = int(b,2) while b: result = a^b #亦或操作只有两位均为‘1’时对整体有影响,而这也是我们所想要的操作 carry = (a&b) << 1 #与操作可以得出在哪一位有了进位,再通过左移操作即完成了前一位的加一操作 a = result b = carry return bin(a)[2:]
运行结果:
关于其中一些知识的链接:
思路三:调用python内函数,不建议这样解答。具体代码如下:
class Solution(object): def addBinary(self, a, b): """ :type a: str :type b: str :rtype: str """ return bin(int(a,2)+int(b,2))[2:]
运行结果:
关于其中一些知识的链接:
分享就到这里了,欢迎大家一起交流讨论。
注明:
题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-binary/
- 点赞 2
- 收藏
- 分享
- 文章举报
相关文章推荐
- 【LeetCode】67. 二进制求和
- 《LeetCode》67. Add Binary(二进制求和)
- Python LeetCode(67.二进制求和)
- leetcode67 二进制求和 python
- leetcode 67 二进制求和
- 【每天一题】LeetCode 0067. 二进制求和
- LeetCode67. 二进制求和
- (LeetCode)Add Binary --- 二进制求和
- LeetCode_Q67_ 二进制求和
- Leetcode67. 二进制求和
- Leetcode 67:Add Binary(二进制求和)
- [leetcode] 64 : 二进制求和
- LeetCode刷题笔记 [67] 二进制求和 *未解决
- LeetCode 题 - 67. 二进制求和 python实现
- 习题013 from Leetcode 二进制求和
- 二进制求和 - LeetCode
- 【LeetCode67】二进制求和
- LeetCode67. 二进制求和
- 【LeetCode】[67] 二进制求和
- leetcode67. 二进制求和