- 链接
https://leetcode.cn/problems/add-binary/ - 题目
给你两个二进制字符串a
和b
,以二进制字符串的形式返回它们的和。
示例
输入:a = “11”, b = “1”
输出:“100”
- 思路
模拟二进制加法,尽可能简化代码。 - 代码
string ans;
int len1=a.length()-1,len2=b.length()-1,carry=0;
while(len1>=0||len2>=0){
//如果len1大于等于0,那么字符串a还没空,所以当该位置的字符是'1'时,“a[len1--]=='1'”语句为真,返回数字1;否则,该位置为字符'0',返回数字0。
//如果len1小于0,那么字符串a已经遍历完了,返回数字0;
carry+=len1>=0?(a[len1--]=='1'):0;
carry+=len2>=0?(b[len2--]=='1'):0;
//注意返回字符串,所以要进行数字到字符串的转化
ans.push_back((carry%2)==1?'1':'0');
carry/=2;
}
if(carry)
ans.push_back('1');
//记得翻转ans字符串
reverse(ans.begin(),ans.end());
return ans;
}
};