67.Add Binary
- 问题描述
给定两个二进制字符串,返回它们的和(也就是二进制字符串)。
输入字符串都是非空的,只包含字符1或0。
例子:
Input: a = "11", b = "1"
Output: "100"
Input: a = "1010", b = "1011"
Output: "10101"
- 解题方法
1.利用二进制的加法运算规则,设置一个进位位,逐位相加
2.使用python强大的数字处理能力,转化围为十进制计算,再转化为二进制字符
- 代码
java
class Solution {
string addBinary(string a, string b) {
string res = "";
int carry = 0; //进位位
int i = a.size()-1, j = b.size()-1;
while(i>=0 || j>=0 || carry==1)
{
int sum = carry;
if(i>=0)
sum += (a[i--]-'0');
if(j>=0)
sum += (b[j--]-'0');
res = to_string(sum%2) + res; //to_string()转化为字符
carry = sum/2;
}
return res;
}
}
python
class Solution(object):
def addBinary(self, a, b):
"""
:type a: str
:type b: str
:rtype: str
"""
return bin(int(a, 2) + int(b, 2))[2:]
//int(a,2)将二进制数的字符串转化为十进制或整型,其中,第二个参数可以是8,16,第一个参数可以是数字
//int(3.14) #3
//bin(x)将x转化为二进制形式的字符串:0b1,0b101
- 总结
1.对于相关两个字符串的处理的题目很多,如数据结构中两个线性表,链表的相加,使用上面的框架很不错
while(i>=0 || j>=0 ) {
......
if(i>=0)
......
if(j>=0)
.....
}
i,j分别代表长度的变量,通过该框架,可以容易的表现出对长度不同的字符串,当哪个字符串结束后,字符串的处理
2.python是个强大的编程语言,其特性是里面有很多功能强大的函数可以使用