学习目标:
- 掌握几种基本的算法结构,实现算法问题解决的基本思维
学习内容:
题目:二进制求和
给你两个二进制字符串 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'
学习产出:
- CSDN 技术笔记 1遍
- CSDN
- leetcode 题目闭环 1个
- . - 力扣(LeetCode)