LeetCode.67. Add Binary

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

分別從最後面開始取字符,一直往前取,如果其中一個長一個短,那麼短的那個取到的就是0,然後分別考慮 00 11 01 的情況,裏面分別對是否有進位進行處理。就可以了。

class Solution {
    public String addBinary(String a, String b) {

        StringBuilder sb = new StringBuilder();

        boolean isCarry = false;
        int lenA = a.length();
        int lenB = b.length();
        for (int i = 0; i < Math.max(lenA, lenB); i++) {
            final char ai = (lenA - i - 1) < 0 ? '0' : a.charAt(lenA - i - 1);
            final char bi = (lenB - i - 1) < 0 ? '0' : b.charAt(lenB - i - 1);

            char x = '0';
            if (ai == '0' && bi == '0') {
                if (isCarry) {
                    x = '1';
                    isCarry = false;
                } else {
                    x = '0';
                }
            } else if (ai == '1' && bi == '1') {
                if (isCarry) {
                    x = '1';
                } else {
                    x = '0';
                }
                isCarry = true;
            } else {
                if (isCarry) {
                    x = '0';
                } else {
                    x = '1';
                }
            }

            sb.insert(0, x);
        }

        if (isCarry) {
            sb.insert(0, '1');
        }

        return sb.toString();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章