剑指Offer通关
力扣搜索LCR即为剑指Offer的所有题目。
LCR 002. 二进制求和
笨方法:
先将两个string反过来,然后相加。
然后将剩下的长的再补上。
需要注意进位。
java
class Solution {
public String addBinary(String a, String b){
StringBuffer res = new StringBuffer();
StringBuffer c = new StringBuffer(a).reverse();
StringBuffer d = new StringBuffer(b).reverse();
String Long = c.length()>d.length() ? c.toString() : d.toString();
int len = Math.min(a.length(), b.length());
int idx = 0;
int add = 0;
for(idx=0;idx<len;idx++){
if(c.charAt(idx)=='0' && d.charAt(idx)=='0'){
if(add==0)
res.append("0");
else if(add==1){
res.append("1");
add = 0;
}
}
else if(c.charAt(idx)=='1' && d.charAt(idx)=='1'){
if(add == 0){
res.append("0");
add = 1;
}
else if(add == 1){
res.append("1");
add = 1;
}
}
else{
if(add==0){
res.append("1");
add = 0;
}
else if(add==1){
res.append("0");
add = 1;
}
}
}
for(; idx<Long.length();idx ++){
if(add == 0)
res.append(Long.charAt(idx));
else{
if(Long.charAt(idx) == '0'){
res.append('1');
add = 0;
}
else res.append('0');
}
}
if(add == 1)
res.append("1");
return res.reverse().toString();
}
}