美文网首页
每周一道算法题(五十一)

每周一道算法题(五十一)

作者: CrazySteven | 来源:发表于2018-04-22 23:17 被阅读32次

本周题目难度'Easy',使用语言'Python'

题目:给定两个字符串(由'0'和'1'组成),要求将其按二进制相加后以字符串类型返回。eg:a = "11",b = "1",返回"100"

思路:很简单,一位一位的遍历相加即可,直接看代码:

class Solution:
    def addBinary(self, a, b):
        """
        :type a: str
        :type b: str
        :rtype: str
        """
        //算出a,b的长度
        len_a = len(a) - 1
        len_b = len(b) - 1
        //是否进位
        temp = 0
        //容器
        result = []
        //遍历相加
        while (len_a >= 0 or len_b >= 0 or temp):
            if len_a >= 0 or len_b >= 0:
                temp_a = (int(a[len_a]) if(len_a >= 0) else 0)
                temp_b = (int(b[len_b]) if(len_b >= 0) else 0)
                num = temp_a + temp_b + temp
                if (num >= 2):
                    temp = 1
                    result.insert(0,(str(num - 2)))
                else:
                    temp = 0
                    result.insert(0,(str(num)))
            else:
                temp = 0
                result.insert(0,'1')
            len_a -= 1
            len_b -= 1 
        //转换成字符串
        return "".join(result)

效率较低,周末上了两天课,等抽时间再优化吧。


今天优化了一下,嗯,要体现出我大Python的强大,就一行代码解决问题,说下思路,将两个字符串分别转成十进制的数,然后相加,将结果转成二进制,删掉二进制的标识即可,下面是代码:

class Solution:  
    def addBinary(self, a, b):
        """
        :type a: str
        :type b: str
        :rtype: str
        """
        return bin(int(a, 2) + int(b, 2))[2:]

无论是代码量还是效率对于Python都是非常不错的。。。

版权声明:本文为 Crazy Steven 原创出品,欢迎转载,转载时请注明出处!

相关文章

  • 每周一道算法题(五十一)

    本周题目难度'Easy',使用语言'Python' 题目:给定两个字符串(由'0'和'1'组成),要求将其按二进制...

  • ARTS第三周(2018-12-16)

    1.Algorithm:每周至少做一个 leetcode 的算法题 第一道算法题:https://leetcode...

  • ARTS(09)

    什么是 ARTS? 算法(Algorithm): 每周至少一道 LeetCode 算法题,加强编程训练和算法学习 ...

  • ARTS(05)

    什么是 ARTS? 算法(Algorithm): 每周至少一道 LeetCode 算法题,加强编程训练和算法学习 ...

  • ARTS(07)

    什么是 ARTS? 算法(Algorithm): 每周至少一道 LeetCode 算法题,加强编程训练和算法学习 ...

  • ARTS(10)

    什么是 ARTS? 算法(Algorithm): 每周至少一道 LeetCode 算法题,加强编程训练和算法学习 ...

  • ARTS(02)

    什么是 ARTS? 算法(Algorithm): 每周至少一道 LeetCode 算法题,加强编程训练和算法学习 ...

  • ARTS(03)

    什么是 ARTS? 算法(Algorithm): 每周至少一道 LeetCode 算法题,加强编程训练和算法学习 ...

  • ARTS(08)

    什么是 ARTS? 算法(Algorithm): 每周至少一道 LeetCode 算法题,加强编程训练和算法学习 ...

  • ARTS(06)

    什么是 ARTS? 算法(Algorithm): 每周至少一道 LeetCode 算法题,加强编程训练和算法学习 ...

网友评论

      本文标题:每周一道算法题(五十一)

      本文链接:https://www.haomeiwen.com/subject/vwphlftx.html