LeetCode 67. 二進位制求和(C++)
阿新 • • 發佈:2018-12-17
給定兩個二進位制字串,返回他們的和(用二進位制表示)。
輸入為非空字串且只包含數字 1
和 0
。
示例 1:
輸入: a = "11", b = "1" 輸出: "100"
示例 2:
輸入: a = "1010", b = "1011" 輸出: "10101"
C++
class Solution { public: string addBinary(string a, string b) { string res=""; reverse(a.begin(),a.end()); reverse(b.begin(),b.end()); if(a.size()<b.size()) { string c=a; a=b; b=c; } int m=a.size(); int n=b.size(); int temp=0; for(int i=0;i<n;i++) { int bit=(a[i]-'0')+(b[i]-'0')+temp; if(bit>=2) { res+=(bit%2+'0'); temp=1; } else { res+=(bit+'0'); temp=0; } } for(int i=n;i<m;i++) { int bit=(a[i]-'0')+temp; if(bit>=2) { res+=(bit%2+'0'); temp=1; } else { res+=(bit+'0'); temp=0; } } if(temp==1) { res+='1'; } reverse(res.begin(),res.end()); return res; } };