给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1 和 0。
示例 1:
输入: a = “11”, b = “1”
输出: “100”
示例 2:
输入: a = “1010”, b = “1011”
输出: “10101”
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-binary
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解法1:模拟
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| class Solution { public: string addBinary(string a, string b) { int n=a.size(),m=b.size(); int i=n-1,j=m-1; int k=0; int temp,t1,t2; string c; char ch; while(i>=0&&j>=0) { t1=a[i]-'0'; t2=b[j]-'0'; temp=t1+t2+k; k=temp/2; temp%=2; ch=temp+'0'; c+=ch; i--; j--; } while(i>=0) { t1=a[i]-'0'; temp=t1+k; k=temp/2; temp%=2; ch=temp+'0'; c+=ch; i--; } while(j>=0) { t2=b[j]-'0'; temp=t2+k; k=temp/2; temp%=2; ch=temp+'0'; c+=ch; j--; } if(k!=0) { ch=k+'0'; c+=ch; }
reverse(c.begin(),c.end()); return c; } };
|