67-add Binary

難度:easy

題目描述

這裏寫圖片描述

算法分析

對都有字符的進行相加,並且注意carry的值,對於不同長度的部分,與carry進行相加即可。
char轉int,ch - ‘0’
int轉char,int + ‘0’

代碼實現

class Solution {
public:
    string addBinary(string a, string b) {
        int n1 = a.length(), n2 = b.length();
        bool flag = 0;
        if (n1 < n2) flag = 1;
        int n = n1 < n2 ? n1:n2;
        string result = "";
        int carry = 0;
        int add1 = 0, add2 = 0, sum = 0;
        for (int i = n - 1; i >= 0; --i) {
            add1 = a[abs(n1 - n) + i] - '0';
            add2 = b[abs(n2 - n) + i] - '0';
            sum = add1 + add2 + carry;
            carry = sum / 2;
            sum %= 2;
            result += (sum + '0');
        }
        if (flag == 1) {

            for (int i = n2 - n1 - 1; i >= 0; --i) {
                sum = (b[i] - '0') + carry;
                carry = sum / 2;
                sum %= 2;
                result += (sum + '0');
            }
        } else {
            for (int i = n1 - n2 - 1; i >= 0; --i) {
                sum = (a[i] - '0') + carry;
                carry = sum / 2;
                sum %= 2;
                result += (sum + '0');
            }
        }
        if (carry == 1) result += '1';
        string ans = "";
        for (int i = result.length()-1; i >= 0; --i)
            ans += result[i];
        return ans;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章