LeetCode(67)——Add Binary

题目:

Given two binary strings, return their sum (also a binary string).

The input strings are both non-empty and contains only characters 1 or 0.

Example 1:

Input: a = "11", b = "1"
Output: "100"

Example 2:

Input: a = "1010", b = "1011"
Output: "10101"

AC:

class Solution {
    public String addBinary(String a, String b) {
        int lenMax = a.length() > b.length() ? a.length() : b.length();
        char[] result = new char[lenMax];
        int indexA = a.length() - 1;
        int indexB = b.length() - 1;
        int index = lenMax - 1;
        int addFlag = 0;
        
        while (indexA >= 0 && indexB >= 0) {
            int tmp = a.charAt(indexA) - '0' + b.charAt(indexB) - '0' + addFlag;
            result[index] = (char)(tmp % 2 + '0');
            
            addFlag = tmp >> 1;
            indexA--;
            indexB--;
            index--;
        }
        
        while (indexA >= 0) {
            int tmp = a.charAt(indexA) - '0' + addFlag;
            result[index] = (char)(tmp % 2 + '0');
            
            addFlag = tmp >> 1;
            indexA--;
            index--;
        }
    
        while (indexB >= 0) {
            int tmp = b.charAt(indexB) - '0' + addFlag;
            result[index] = (char)(tmp % 2 + '0');
            
            addFlag = tmp >> 1;
            indexB--;
            index--;
        }
        
        return 1 == addFlag ? "1" + String.valueOf(result) : String.valueOf(result);
    
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_39120845/article/details/81805499