给定两个 01 字符串 a 和 b ,请计算它们的和,并以二进制字符串的形式输出。
输入为 非空 字符串且只包含数字 1 和 0。
示例 1:
输入: a = "11", b = "10"
输出: "101"
示例 2:
输入: a = "1010", b = "1011"
输出: "10101"
提示:
每个字符串仅由字符 '0' 或 '1' 组成。
1 <= a.length, b.length <= 10^4
字符串如果不是 "0" ,就都不含前导零。
题解:
注意区分字符串赋值 a[i]='0';
字符串开始位置:a.length()-1;
字符串反转:
reverse(res.begin(), res.end());
字符串拼接:
res.push_back('0' + sum % 2);//在其后填0
1 class Solution { 2 public: 3 string addBinary(string a, string b) { 4 string res=""; 5 int la=a.length()-1; 6 int lb=b.length()-1; 7 int maxx=max(la,lb); 8 int k=0,i=la,j=lb; 9 while(i>=0||j>=0) 10 { 11 int ca=i>=0?a[i--]-'0':0; 12 int cb=j>=0?b[j--]-'0':0; 13 int now=ca+cb+k; 14 k=now>=2?1:0; 15 res.push_back('0' + now% 2); 16 } 17 if (k != 0) res.push_back('0' +k); 18 reverse(res.begin(), res.end()); 19 return res; 20 } 21 };