今天没事儿刷了个题,本以为是十分easy的题目,结果结实把我恶心了一阵。。。就是一个简单的十进制二进制转换的问题
二进制求和
描述
笔记
数据
评测
给定两个二进制字符串,返回他们的和(用二进制表示)。
您在真实的面试中是否遇到过这个题? Yes
样例
a = 11
b = 1
返回 100
解法:很简单,先把二进制转换为十进制,然后加和,然后再转换为2进制。需要注意的是,二进制to十进制很容易,但是十进制to二进制的时候,得到的顺序是“逆”的,我最开始就栽在这个地方了。因此需要用一个列表去储存每次得到的余数,然后把链表逆置。
代码如下:
class Solution:
# @param {string} a a number
# @param {string} b a number
# @return {string} the result
def binary_to_integer(self,n):
count = 0
sum = 0
while n != 0:
value = n % 10
sum += 2 ** count * value
count += 1
n /= 10
return sum
def integer_to_binary(self,m):
if m == 0:
return 0
count = 0
sum = []
while m !=0:
value = m % 2
sum.append(str(value))
m /= 2
sum = sum[::-1]
a = "".join(sum)
return a
def addBinary(self, a, b):
# Write your code here
a = int(a)
b = int(b)
new_integer = self.binary_to_integer(a) + self.binary_to_integer(b)
return str(self.integer_to_binary(new_integer))