思路:
1.判断两个字符串长度,若不等长就在字符串前补0
2.字符串对应位置相加,(注意相加是要减一个“0”)
3.判断相加后是否大于2,若大于向前一位进1
4.当运行到首位时,需判断是否大于2,若大于2,直接将“1”加入到字符串头位置
代码:
class Solution {
public:
string addBinary(string a, string b) {
int asize=a.size(), bsize=b.size();
//判断a&b是否等长
while(asize>bsize)
{
b='0'+b;//前面补0
++ bsize;
}
while(asize<bsize)
{
a='0'+a;
++ asize;
}
for(int i=asize-1;i>0;--i)
{
a[i]=a[i]-'0'+b[i];
if(a[i]>='2')
{
a[i]=a[i]%2+'0';
a[i-1]=a[i-1] +1;
}
}
//当运行到首位时
a[0]=a[0]-'0'+b[0];
if(a[0]>='2')
{
a[0]=(a[0]-'0')%2+'0';
a='1'+a;
}
return a;
}
};
Every step of barefoot running deserves to be recorded