进阶计划_算法思维_挑战100天_DAY11

  学习目标:

  • 掌握几种基本的算法结构,实现算法问题解决的基本思维

学习内容:

题目:二进制求和

给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。

示例 1:

输入:a = "11", b = "1"
输出:"100"

示例 2:

输入:a = "1010", b = "1011"
输出:"10101"

题解明细:

思路:

1.若a、b中有一个为'0',那么直接返回另一个。
2.若都不为'0',那么将a、b转成数字后相加,后序遍历相加的结果,如果某一位的值超过1,则进一位。具体来说,当前位置可能为2或3,应变为0或1,即减2,而前一位要加1,相当于由前一位和当前位组成的数,先减2、再加10,即加8


学习笔记:

1、如果是纯机试,为了解题的话,可以考虑内置函数:

1、 a,b都是字符串,直接用int转化为10进制int(a,2),int(b,2)
2、 将相加结果直接用bin转化为二进制字符串

2、可以用来练习一下递归的写法,这里可以分享给大家:

每位数字相加之后一共有三种情况:
1.都是0,不进位
2.有一个是1,不进位
3.要进位
进位无非就是在上一位加减时多一个1而已,举例来说:
a,b = '1100','110'
addBinary('1100' , '110') -> addBinary('110','11') + '0'
->addBinary('11','1')+'10' -> addBinary(addBinary('1',''),'1') + '010'
->addBinary('1','1')+'010' -> addBinary(addBinary('',''),'1') + '0010'
->'10010'

学习产出:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值