leet code add binary 题目:https://leetcode.com/problems/add-binary/
解题思路:
1.获取两个字符串长度的最大值
2.记录进位标记 int carry
3.从后向前,以此取数,把与2取模的值插入字符串中,记录进行carry
4.遍历结束,判断最高进位是否是1,如果是1,在字符串中插入1,如果是0,不做处理。
主要用到了Java 中StringBuilder 中的insert 方法
public static void main(String[] args) {
String a="11";
String b="1";
String s = addBinary(a, b);
System.out.println(s);
}
/**
* 二进制字符串进位
* @param a
* @param b
* @return
*/
public static String addBinary(String a, String b) {
int num=Math.max(a.length(),b.length());
StringBuilder sb=new StringBuilder();
int carry=0;
for(int i=0;i<num;i++){
int p=0;
int q=0;
if(i<a.length()&& i<b.length()){
p=a.charAt(a.length()-1-i)-'0';
q=b.charAt(b.length()-1-i)-'0';
}else if(i<a.length()&& i>=b.length()){
p=a.charAt(a.length()-1-i)-'0';
q=0;
}else if(i>=a.length()&& i<b.length()){
p=0;
q=b.charAt(b.length()-1-i)-'0';
}
//进位
int realNum=(p+q+carry)%2;
sb.insert(0,realNum);
carry=p+q+carry>1?1:0;
}
if(carry==1){
sb.insert(0,1);
}
return sb.toString();
}