Leetcode练习<十五>二进制数相加
2017-06-13 10:28
344 查看
class Solution(object): # 转换成一样长度的列表 def convert2SameLength(self, a, b): a = list(a) b = list(b) length = max(len(a), len(b)) for i in range(0, abs(len(a) - len(b))): if len(a) > len(b): b.insert(i, 0) elif len(a) < len(b): a.insert(i, 0) return a, b def addBinary(self, a, b): a, b = self.convert2SameLength(a, b) c = [] step = 0 for i in range(len(a) - 1, -1, -1): if int(a[i]) + int(b[i]) == 2: # 都为1的时候 # print('step:', step, 'a[i]', a[i], 'b[i]', b[i]) c.insert(0, str(step)) step = 1 # print(c) elif int(a[i]) + int(b[i]) == 1: # 一个为1, 一个为0的时候 # print('step:', step, 'a[i]', a[i], 'b[i]', b[i]) c.insert(0, str(0 if 1 + step == 2 else 1)) step = (1 if 1 + step == 2 else 0) # print(c) else: # 都为0的时候 # print('step:', step, 'a[i]', a[i], 'b[i]', b[i]) c.insert(0, str(step)) step = 0 # print(c) if step == 1: c.insert(0, str(step)) return ''.join(c) # 大神写的还没看懂 def addBinary1(self, a, b): if len(a) == 0: return b if len(b) == 0: return a if a[-1] == '1' and b[-1] == '1': return self.addBinary(self.addBinary(a[0:-1], b[0:-1]), '1') + '0' if a[-1] == '0' and b[-1] == '0': return self.addBinary(a[0:-1], b[0:-1]) + '0' else: return self.addBinary(a[0:-1], b[0:-1]) + '1' if __name__ == '__main__': a = '111' b = '11' s = Solution() # a, b = s.convert2SameLength(a, b) print(s.addBinary1(a, b))
相关文章推荐
- leetcode_67. Add Binary 字符串形式的二进制数相加
- [LeetCode] Add Binary 二进制数相加
- Leetcode刷题记——67. Add Binary(二进制数相加)
- [LeetCode] 67. Add Binary 二进制数相加
- LeetCode-67 Add Binary(二进制数相加)
- leetCode 之 两个二进制数相加
- Leetcode练习-两个数字相加(Add two numbers)
- leetcode 之 二进制数相加
- Leetcode练习<十六> 爬楼梯与斐波那契数列
- leetcode练习题目
- 【LeetCode-面试算法经典-Java实现】【129-Sum Root to Leaf Numbers(全部根到叶子结点组组成的数字相加)】
- LeetCode Online Judge 题目C# 练习 - 3SUM
- LeetCode Online Judge 题目C# 练习 - Add two number
- Leetcode练习<十九> 字符串数组的公共前缀
- LeetCode Online Judge 题目C# 练习 - Combination
- Leetcode练习-Add Two Number
- Leetcode练习- Reverse Integer
- LeetCode Online Judge 题目C# 练习 - Length of Last Word
- leetCode练习(101)
- LeetCode Online Judge 题目C# 练习 - Merge k Sorted Lists