0
点赞
收藏
分享

微信扫一扫

【LeetCode】剑指 Offer II 002. 二进制加法

题目

​​https://leetcode.cn/problems/JFETK5/​​

思想

简单模拟

代码

class Solution:
def addBinary(self, a: str, b: str) -> str:
cnt = 0
res = []
# 翻转两个字符串
a = "".join(reversed(a))
b = "".join(reversed(b))
flag = 0 # 是否有进位
while(cnt< len(a) and cnt < len(b)):
tmp = int(a[cnt]) + int(b[cnt]) + flag
flag = tmp//2 # 对2
tmp = tmp% 2
res.append(tmp)
cnt += 1

# 根据最后的进位再做处理
while( cnt <len(a) ):
tmp = int(a[cnt]) + flag
flag = tmp //2
tmp = tmp%2
res.append(tmp)
cnt += 1
while(cnt < len(b) ):
tmp = int(b[cnt]) + flag
flag = tmp //2
tmp = tmp%2
res.append(tmp)
cnt += 1

if(flag):
res.append(flag)
res.reverse()
return "".join(list(map(str,res)))

# b = "10111"
# a = "111"
# s = Solution()
# res = s.addBinary(a,b)
# print(res)


举报

相关推荐

0 条评论