1. 程式人生 > >LeetCode---67. Add Binary

LeetCode---67. Add Binary

LeetCode—67. Add Binary

題目

思路及解法

要注意兩點: 1.兩個字串有可能不是等長的,這樣在相加時就可能出現空指標的問題,所以首先要把較短的字串左端補零,將兩個字串補位等長。 2.字串charAt操作是從字串的最左端開始操作的,也就是二進位制的最高位,所以相加完成後不要忘記reverse

程式碼

class Solution {
    public String addBinary(String a, String b) {
        int aLen=a.length(), bLen=b.length();
        int maxLen = Math.max(aLen, bLen);
        int tempA, tempB;
        int carry=0, val=0;
        StringBuffer sb = new StringBuffer();
        for(int i=0; i<maxLen; i++){
            tempA = aLen>i ? a.charAt(aLen-i-1)-'0' : 0;
            tempB = bLen>i ? b.charAt(bLen-i-1)-'0' : 0;
            val = (tempA + tempB + carry) % 2;
            carry = (tempA + tempB + carry) / 2;
            
            sb.append(val + "");
        }
        return (carry==1) ? "1"+sb.reverse() : sb.reverse().toString(); 
    }
}