Given two binary strings, return their sum (also a binary string).
For example,
a = “11”
b = “1”
Return “100”
题目:两个代表二进制数字的字符串相加
思路:从低位开始相加,逢二进一:
- 字符串的高位是数字的低位。例如:string a = “100”,a[2]则为”0”; - 用一个变量记录相加的进位情况。 > Language:cpp
class Solution {
public:
string addBinary(string a, string b) {
string s = "";
//i字符串a的索引值,j字符串b的索引值
int c = 0, i = a.size() - 1, j = b.size() - 1;
//字符串a和b没有遍历完,或者存在进位,继续计算
while(i >= 0 || j >= 0 || c == 1)
{
//三目运算符:低位相加
c += i >= 0 ? a[i--] - '0' : 0;
c += j >= 0 ? b[j--] - '0' : 0;
//结果
s = char(c % 2 + '0') + s;
//进位计算
c /= 2;
}
//返回结果
return s;
}
};
Language:Python
class Solution(object):
def addBinary(self, a, b):
"""
:type a: str
:type b: str
:rtype: str
"""
if len(a)==0: return b
if len(b)==0: return a
if a[-1] == '1' and b[-1] == '1':
return self.addBinary(self.addBinary(a[0:-1],b[0:-1]),'1') +'0'
if a[-1] == '0' and b[-1] == '0':
return self.addBinary(a[0:-1],b[0:-1])+'0'
else:
return self.addBinary(a[0:-1],b[0:-1])+'1'
LeetCode题目汇总: https://github.com/Jack-Cherish/LeetCode