难度:Easy
给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1 和 0。
示例 1:
输入: a = "11", b = "1" 输出: "100" 示例 2:
输入: a = "1010", b = "1011" 输出: "10101"
按普通加法一位一位算,留一个进位标志。
class Solution {public:string addBinary(string a, string b) {a='0'+a;b='0'+b;// cout<<a<< " " <<b <<endl;if(a.length()>b.length()){int tmp=a.length()-b.length();while(tmp--)b= '0'+b;}else if(a.length()<b.length()){int tmp=b.length()-a.length();while(tmp--)a='0' +a;}// cout<<a<< " " <<b <<endl;bool flag=false;int len=a.length();string res;for(int i=len-1;i>0;i--){if(a[i] ^ b[i]){if(flag)res='0'+res;elseres = '1'+res;}else{if(a[i]=='0'){if(flag){res= '1'+res;flag=false;}elseres= '0'+res;}else{if(flag)res= '1'+res;else{res='0'+res;flag=true;}}}}if(flag) res='1'+res;return res;}};
执行用时 :16 ms, 在所有 C++ 提交中击败了24.74%的用户 内存消耗 :9.3 MB, 在所有 C++ 提交中击败了6.03%的用户