https://leetcode.cn/problems/add-binary/description/
给出的两个二进制,我们可以从最后开始往前运算。
给当前短的一位前面补充0即可。
class Solution {
public String addBinary(String a, String b) {
//给的就是二进制字符串 最后一位开始遍历 如果没有就补充0?
StringBuilder sb = new StringBuilder();
int ca=0;
//和链表的两数相加类似 i>=0 如果下标小于了0就给当前的补充0即可。
for(int i=a.length()-1,j=b.length()-1;i>=0||j>=0;i--,j--){
int sum=ca;
sum+=i>=0?a.charAt(i)-'0':0;
sum+=j>=0?b.charAt(j)-'0':0;
sb.append(sum%2);
ca=sum/2;
}
sb.append(ca==1?ca:"");
return sb.reverse().toString();
}
}
通过 i>=0||j>=0 保证最长的运算完成。
通过i>=0,来给短的那一个补充0.
sum+=i>=0?a.charAt(i)-‘0’:0;
sb.append() sum和2进行取模,因为二进制满2就需要往前进一个。
最后的ca如果是前一位进上来为1,那么还要添加上去。
最后反转即可。