LeetCode | Add Binary(二進位制相加)
阿新 • • 發佈:2019-01-27
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
對string瞭解不熟練,本來想著一直在res前加字元,但不會用,後來就在res後加字元然後呼叫reverse翻轉。其實用:res = (char)(tmp+'0') + res;即可。
class Solution { public: string addBinary(string a, string b) { int alen = a.size(); int blen = b.size(); if(!alen) return b; if(!blen) return a; int carry = 0; string res; int i,j; //從後向前依次求和 for(i = alen-1,j = blen-1;i>=0 && j>=0;i--,j--){ int tmp = a[i]-'0'+b[j]-'0'+carry; if(tmp >= 2) carry = 1; else carry = 0; res += tmp%2+'0'; } //如果j沒遍歷完,就接著遍歷 while(j>=0){ int tmp = b[j]-'0'+carry; if(tmp >= 2) carry = 1; else carry = 0; res += tmp%2+'0'; j--; } while(i>=0){ int tmp = a[i]-'0'+carry; if(tmp >= 2) carry = 1; else carry = 0; res += tmp%2+'0'; i--; } //處理最後還有進位的情況 if(carry) res+='1'; reverse(res.begin(),res.end()); return res; } };