给定两个二进制字符串,返回他们的和(用二进制表示)。
为输入侧非空字符串御姐只所有游戏数字 1
状语从句: 0
。
示例1:
输入: a =“11”,b =“1” 输出: “100”
示例2:
输入: a =“1010”,b =“1011” 输出: “10101”
思路:先将两个字符串对其(短的前面补0),然后从后面开始相加,存入新数组,存入过程中考虑进位情况以及最后是否是否会产生扩位的情况,最后导致新数组即结果。
class Solution {
public String addBinary(String a, String b) {
//可能会位
int jw = 0;
String c=new String();
int q = a.length();
int w = b.length();
int e;
//讲短的前面补0
if(q<w)
for(int i = 0 ; i <w-q;i++)
{
a = "0"+a;
}
else if(q>w)
for(int i = 0 ; i <q-w;i++)
{
b = "0"+b;
}
//刷新长度
if(q<w)
q=w;
else
w=q;
//相加 如果是2.3则进位jw = 1
for(int i=q-1;i>=0;i--)
{
e = a.charAt(i)+b.charAt(i)-'0'-'0'+jw;
jw = 0;
if(e >= 2)
{
e = e-2;
jw = 1;
}
c = c+e;
//处理最后是否发生进位
if(i == 0&&jw == 1)
c = c + jw;
}
//倒置结果
return new StringBuffer(c).reverse().toString();
}
}