python 练习题 67. 二进制求和

地址:https://leetcode-cn.com/problems/add-binary/

 

 1 '''
 2 给你两个二进制字符串,返回它们的和(用二进制表示)。
 3 
 4 输入为 非空 字符串且只包含数字 1 和 0。
 5 
 6  
 7 
 8 示例 1:
 9 
10 输入: a = "11", b = "1"
11 输出: "100"
12 示例 2:
13 
14 输入: a = "1010", b = "1011"
15 输出: "10101"
16 
17 '''
18 
19 '''
20 思路:
21 1.从字符串a、b最后转成数值相加,最后ab去掉最后以为
22 2.小于2,返回值为实际相加数
23 3.等于2,返回0,再返回newab =1,如果此时ab长度为 1,0、0,1、1,1则返回值再加1
24 4.大于2,返回1,再返回newab =1,如果此时ab长度为 1,0、0,1、1,1则返回值再加1
25 5.最后取反,转成str
26 '''
27 
28 
29 
30 class Solution:
31     def addBinary(self, a: str, b: str) -> str:
32 
33         res = ''
34         newab = 0
35         while True:
36 
37             la = len(a)
38             lb = len(b)
39             if la < 1 and lb < 1:
40                 break
41 
42             ab = (0 if la < 1 else int(a[-1])) + (0 if lb < 1 else int(b[-1])) + newab
43             if ab < 2:
44                 res += str(ab)
45                 newab = 0
46             else:
47                 if ab ==2:
48                     res += '0'
49                 else:
50                     res += '1'
51                 newab = 1
52                 if la + lb == 1 or la == lb == 1:
53                     res += str(newab)
54 
55             a = a[:-1]
56             b = b[:-1]
57         return str(res)[::-1]

 

 

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-binary
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

posted @ 2022-04-25 21:17  菜小鱼~  阅读(171)  评论(0编辑  收藏  举报