我是靠谱客的博主 专注砖头,最近开发中收集的这篇文章主要介绍LeetCode二进制求和(Python)——位运算,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目

在这里插入图片描述

解题思路

第一反应还是直接列竖式,这里有一个小小的坑就是,字符串类型是不可变的,因此无法通过下标直接修改,还是需要创建一个新的字符串来保存结果。代码如下:
在这里插入图片描述
在这里插入图片描述
执行结果为:
在这里插入图片描述
但是发现为了避免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)——位运算所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部