【LEETCODE】【簡單】#67 二進位制求和
阿新 • • 發佈:2018-12-24
給定兩個二進位制字串,返回他們的和(用二進位制表示)。
輸入為非空字串且只包含數字 1
和 0
。
示例 1:
輸入: a = "11", b = "1" 輸出: "100"
示例 2:
輸入: a = "1010", b = "1011" 輸出: "10101"
class Solution { public: string addBinary(string a, string b) { string c=""; int i,j; int flag=0; //記錄進位 for(i=a.size()-1,j=b.size()-1;i>=0||j>=0;i--,j--){ if(i<0){a.insert(a.begin(),'0');i=0;} //如果二進位制數a較短則插入0再與b相加 if(j<0){b.insert(b.begin(),'0');j=0;} switch((a[i]-'0')+(b[j]-'0')+flag){ //二進位制位相加的四種情況 case 3: c.insert(c.begin(),'0'+1); //1+1+1=1,進位1 flag=1; break; case 2: c.insert(c.begin(),'0'+0); //1+1+0=0.進位1 flag=1; break; case 1: c.insert(c.begin(),'0'+1); //1+0+0=1,進位0 flag=0; break; case 0: c.insert(c.begin(),'0'+0); //0+0+0=0,進位0 flag=0; break; } //cout<<flag<<endl; } if(flag==1)c.insert(c.begin(),'1'); //考慮最高位進位 return c; } };
【後記】
1.這道題!本來想投機取巧,把二進位制轉化成整數相加再轉化成二進位制,結果!溢!出!了!看著錯誤報告裡一長串數字我是崩潰的。。。