题目 1.
https://leetcode.com/problems/add-binary/
题目简介:两个二进制字符串,求他们的和,也用二进制表示
题解:首先把两个字符串中长的赋值x,短的y。 对短的y逆序遍历,将x与y后面几位分别相加值存起来,暂时不进位。得到新字符串C, 对C进行进位处理,弄一个进位标识符。
class Solution {
public String addBinary(String a, String b) {
String x,y;
if(a.length() >= b.length()){
x = a;
y = b;
}else{
x = b;
y = a;
}
String c ="";
for(int i=0;i<y.length();i++){
int addxy = (x.charAt(x.length()-i-1)-'0') +(y.charAt(y.length()-i-1)-'0');
System.out.println(y.charAt(y.length()-i-1));
c = String.valueOf(addxy)+c;
}
c = x.substring(0,x.length()-y.length()) +c;
int add = 0;
String d = "";
//对C进行进位处理
for(int i=c.length()-1;i>=0;i--){
if(c.charAt(i) == '2' && add == 0){
d = "0"+d;
add = 1;
}else if(c.charAt(i) == '2' && add == 1){
d = "1"+d;
add = 1;
}else if(c.charAt(i) == '1' && add == 1){
d = "0"+d;
add = 1;
}else if(c.charAt(i) == '1' && add == 0){
d = "1"+d;
add = 0;
}else if(c.charAt(i) == '0'){
d = String.valueOf(add)+d;
add = 0;
}
}
//超出部分继续进位
if(add == 1)d = "1"+d;
return d;
}
}