二进制求和
给你两个二进制字符串a和b,以二进制字符串的形式返回它们的和
示例:
示例1:
输入:a = "11", b = "1" 输出:"100"示例2:
输入:a = "1010", b = "1011" 输出:"10101"
提示:
1 <= a.length, b.length <= 104a和b仅由字符'0'或'1'组成- 字符串如果不是 
"0",就不含前导零 
==思路==:
- 判断如果字符串a为null或者长度为0那么就返回b字符串因为0+1=1,相反字符串b同理
 - 创建StringBuilder对象,用于追加字符串拼接的结果,定义两个字符串的长度[^长度减-防止IndexOutOfBountException]防止一下角标越界
 - 定义int类型临时变量c
 - while循环i大于等于0或者j大于等于0则为true,执行方法体,if判断如果i大于等于0则执行临时变量c加等于
a.charAt(i --) - '0';将字符串类型转换为int数字,然后加等于到c中,第二个if判断j是否大于等于0操作同 i - StringBuilder对象调用append追加字符串拼接(c % 2);因为二进制==逢二进一==所以要取模2如果为2那么取模结果为0
 - 最后将c临时变量»=按位右移1位==(1或2按位右移后都为0)==。
 
public String addBinary(String a, String b) {
        if(a == null || a.length() == 0) 
           return b;
        if(b == null || b.length() == 0) 
           return a;
        StringBuilder stb = new StringBuilder();
        int i = a.length() - 1;
        int j = b.length() - 1;
        int c = 0;  // 进位
        while(i >= 0 || j >= 0) {
            if(i >= 0) c += a.charAt(i --) - '0';
            if(j >= 0) c += b.charAt(j --) - '0';
            stb.append(c % 2);
            c >>= 1;
        }
        String res = stb.reverse().toString();
        return c > 0 ? '1' + res : res;
}
文档信息
- 本文作者:Dkx
 - 本文链接:https://pigpigletsgo.github.io/dou_note.github.io/2023/12/29/erjinzhiqiuhe/
 - 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)