Add Binary

Add Binary

https://leetcode.com/problems/add-binary/

Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100".

算法

  1. 假设aLen表示string a的长度,那么它的第aLen - 1个元素表示的最低位;string b同
  2. 用一个flag记录来代表进位

代码

public class Solution {
    public String addBinary(String a, String b) {
        if (a == null || b == null) {
            return "";
        }
        if (a.isEmpty()) {
            return b;
        }
        if (b.isEmpty()) {
            return a;
        }
        
        int s;
        int flag = 0;
        StringBuilder sb = new StringBuilder();
        int i = a.length() - 1;
        int j = b.length() - 1;
        do {
            if (i >= 0 && j >= 0) {
                s = a.charAt(i--) - '0' + b.charAt(j--) - '0' + flag * 1;                
            } else if (i >= 0) {
                s = a.charAt(i--) - '0' + flag * 1;
            } else {
                s = b.charAt(j--) - '0' + flag * 1;
            }
            
            flag = s / 2;
            sb.append(s % 2);
        } while (i >= 0 || j >= 0);
        
        if (1 == flag) {
            sb.append(1);
        }
        
        return sb.reverse().toString();
    }
}
posted @ 2015-08-28 10:44  TinaYo  阅读(147)  评论(0编辑  收藏  举报