67. Add Binary*
https://leetcode.com/problems/add-binary/description/
题目描述
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"
解题思路
引入一个进位 carry_over
. 记得链表方面也有一道类似的题, 可以用相同的方法解决.
C++ 实现 1
时间复杂度为 O ( 1 ) O(1) O(1)
class Solution {
public:
string addBinary(string a, string b) {
string res;
int i = a.size() - 1, j = b.size() - 1, carry_over = 0;
while (i >= 0 || j >= 0 || carry_over) {
int part1 = i >= 0 ? a[i] - '0' : 0;
int part2 = j >= 0 ? b[j] - '0' : 0;
int sum = part1 + part2 + carry_over;
res = to_string(sum % 2) + res;
carry_over = sum / 2;
i --;
j --;
}
return res;
}
};