Add Binary
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
思路: 从后向前加,保持进位,当无进位,且遍历完毕时结束。
注意:Collections.reverse不能用于String,而StringBuffer自己带有reverse函数,return a reference to this object.
- public String addBinary(String a, String b) {
- if(a==null) return b;
- if(b==null) return a;
- int alen = a.length();
- int blen = b.length();
- if(alen==0) return b;
- if(blen==0) return a;
- StringBuffer res = new StringBuffer();
- int cnt = 0;
- alen = alen-1;
- blen = blen -1;
- while(alen>=0 || blen>=0 || cnt>0) {
- int first = 0;
- int second=0;
- if(alen>=0) first=a.charAt(alen--)-'0';
- if(blen>=0) second=b.charAt(blen--)-'0';
- int sum = first + second + cnt;
- if(sum>=2) {
- sum = sum - 2;
- cnt = 1;
- } else {
- cnt = 0;
- }
- res.append(sum);
- }
- String res2 = res.reverse().toString();
- return res2;
- }