概述
题目
解题思路
第一反应还是直接列竖式,这里有一个小小的坑就是,字符串类型是不可变的,因此无法通过下标直接修改,还是需要创建一个新的字符串来保存结果。代码如下:
执行结果为:
但是发现为了避免a、b长短不一样而带来的越界问题,多写了很多行代码,于是想着让短的补0对齐,能让代码更加简洁:
执行结果为:
然后看了一下评论区的解决方案,发现可以用到位运算,所以这里详细讲解一下。
拿我们熟悉的十进制相加举例子,9+98我们可以如何计算呢?首先只做各位相加但不管进位,9+8=17,个位数为7,然后9+0=9,得到97;然后做进位,发现9+8产生进位了,再次相加但不管进位,9+1=10,这里十位数为0;然后发现还有进位,再次相加但不管进位,0+1=1,百位为1,没有进位了,最终得到结果107。
换成二进制,如何利用位运算实现上面的分解呢?第一步要做各位相加但不管进位,也就是说0+0、1+1运算要等于0,1+0要等于1,可以用异或运算来实现;第二步做进位,要求1+1=1,其他=0,可以用且运算来实现,并且由于进位是作用在更高一位上的,所以要记得左移一位。
代码如下:
执行结果为:
最后
以上就是专注砖头为你收集整理的LeetCode二进制求和(Python)——位运算的全部内容,希望文章能够帮你解决LeetCode二进制求和(Python)——位运算所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复