力扣67. 二进制求和python实现

67. 二进制求和

一、问题描述

在这里插入图片描述

二、补充知识

1、平方的表示
(1)3^2要表示为3**2;
(2)使用pow(x,y)函数,其表示x的y次方。

pow(3,2) 

2、类中的方法如何互相调用
(1)使用self.方法名调用,如:self.two_to_ten(a);
(2)使用类名.方法名()调用:sum2 = Solution.two_to_ten(self,b)。

三、算法思想

1、先定义两个函数。一个用来十进制转换成二进制;另一个用来二进制转换成十进制。

2、题目中给的是二进制形式的字符串,利用for循环依次从前往后获取字符串中的每个字符,然后强制转换成int类型的,接着再利用数学方法把其转换成十进制的数,定义一个变量sum接收它们的和。最终得到的结果就是题目给出的字符串对应的十进制数。

3、把转换后的两个十进制数相加,得到最终结果,再利用十进制数转二进制的函数把其转换成二进制的数。因为题目要求返回的是字符串类型,所以最后要再转换成字符串返回。

四、代码

class Solution(object):
    def two_to_ten(self,x):
        sum = 0
        length = len(x)
        j = 0
        for i in x:
            i = int(i)
            #sum += i * (2 ** (length - 1 - j))     
            sum += i * pow(2,(length - 1 - j))      
            j += 1
        return sum
    def ten_to_two(self,x):
        str1 = ''
        if x == 0:
            return '0'
        while x != 1:
            str1 = str(x % 2) + str1
            x = x // 2
        if x == 1: # 当最后等于1时也要把其加到字符串里,因为等于一没进循环,所以要补上一步
            str1 = '1' + str1
        return str1
        

    def addBinary(self, a, b):
        """
        :type a: str
        :type b: str
        :rtype: str
        """
        sum1 = self.two_to_ten(a)
        #sum2 = self.two_to_ten(b)
        sum2 = Solution.two_to_ten(self,b)
        sum = sum1 + sum2
        result1 = self.ten_to_two(sum)
        return result1

五、题目链接

https://leetcode.cn/problems/add-binary/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值