`

Add Binary

阅读更多
Given two binary strings, return their sum (also a binary string).

For example,
a = "11"
b = "1"
Return "100".

这道题目与Add Two Numbers 这道题目类似。不同的是这道题符合我们从低位到高位的进位方式,也就是从右往左,add two numbers那道题目是从左往右,一个是十进制,一个是二进制。思路是一样的,维护一个进位carry,对于这道题目,如果当前的值大于1的时候就需要进位,此时我们就把carry设置为1。在我们扫描完字符串之后,不要忘记检测carry的值,如果为1我们就要把它加入新的字符串中。代码如下:
public class Solution {
    public String addBinary(String a, String b) {
        if(a == null || a.length() == 0) return b;
        if(b == null || b.length() == 0) return a;
        int carry = 0;
        int al = a.length() - 1;
        int bl = b.length() - 1;
        StringBuilder  sb = new StringBuilder();
        while(al >= 0 || bl >= 0) {
            int tem = 0;
            if(al >= 0) {
                tem = a.charAt(al) - '0';
            }
            if(bl >= 0) {
                tem += b.charAt(bl) - '0';
            }
            tem += carry;
            if(tem > 1) {
                carry = 1;
            } else {
                carry = 0;
            }
            sb.append(tem % 2);
            al --;
            bl --;
        }
        if(carry == 1) 
            sb.append(carry);
        return sb.reverse().toString();
    }
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics