iven 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”
✔ Accepted
✔ 294/294 cases passed (8 ms)
✔ Your runtime beats 69.09 % of cpp submissions
✔ Your memory usage beats 13.31 % of cpp submissions (9.3 MB)
题不难,关于char和int的转换可以好好看看
class Solution {
public:
string addBinary(string a, string b) {
string res = "";
int i = a.size()-1, j = b.size()-1;
int carry = 0;
while(i>=0|| j>=0|| carry ==1){
int temp_sum = carry;
if(i>=0 ){
temp_sum += (a[i]-'0');
i--;
}
if(j>=0 ){
temp_sum += (b[j]-'0');
j--;
}
carry = temp_sum/2; //相加等于2时进位
res = to_string(temp_sum%2) + res; //sum=0或2时,该位置零;=1时,该位置1。此处还用到了字符串的拼接+重载
}
return res;
}
};
还有问题:
if(i>=0 && a[i]==‘1’)
if(j>=0 && b[i]==‘1’)
这样写的话 报我超时或者超内存,想不明白