题目描述:
Given two binary strings, return their sum (also a binary string).
The input strings are both non-empty and contains only characters 1
or 0
.
Example 1:
Input: a = "11", b = "1" Output: "100"
Example 2:
Input: a = "1010", b = "1011" Output: "10101"
意思就是二进制相加。
我的思路:因为在二进制中1+1=0;1+0=1;所以我就设置一个进位符标志,分别对a 和b进行遍历,从最后一位开始相加,如果是相加得到0;那么我就设置一个flag=1;表示向前进一位,然后我的sum是记录每次相加的和。每次相加转成字符串,最后就可以直接输出。
class Solution {
public:
string addBinary(string a, string b) {
string sum = "";
int flag = 0; //设置进位符
int i = a.length()-1;
int j = b.length() - 1;
while(flag==1 || i>=0 || j>=0){
if(i>=0){
flag = flag + a[i--] - '0';
}
if(j>=0){
flag = flag + b[j--] - '0';
}
sum = char(flag%2+'0') + sum;
flag = flag/2;
}
return sum;
}
};