原題目:
給你兩個二進制字元串,傳回它們的和(用二進制表示)。
輸入為 非空 字元串且隻包含數字 1 和 0。
示例 1:
輸入: a = “11”, b = “1”
輸出: “100”
示例 2:
輸入: a = “1010”, b = “1011”
輸出: “10101”
思路:
根據兩個字元串長度從後往前周遊a,b數組,用x,y存儲每一次周遊到的字元,當其中一個字元長度減為0時,會自動變為0。
周遊到的字元進行相加然後與2取餘作為兩個數的和,将兩個數相加的值除以2作為進位值,并把這個值插入到字元串第一個位置。
當兩個字元串都周遊完成并且進位值為0時,退出循環,輸出str。
代碼:
class Solution {
public:
string addBinary(string a, string b) {
string str;
int jinwei = 0;
for(int i = a.size() - 1, j = b.size() - 1; i >= 0 || j >= 0 || jinwei; --i, --j) {
int x = i < 0 ? 0 : a[i] - '0';
int y = j < 0 ? 0 : b[j] - '0';
int sum = (x + y + jinwei) % 2;
carry = (x + y + jinwei) / 2;
str.insert(0, 1, sum + '0');
}
return str;
}
};
[練習題23-求根](https://blog.csdn.net/weixin_44370808/article/details/106867882)