Add Binary(二進位制字串相加)
阿新 • • 發佈:2018-12-24
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
Solutions:
剛開始走了彎路,將2進位制字串轉化為整型int,相加後結果轉化為2進位制string。麻煩且字串太長的話會出錯。
後來用一個進位直接判斷字元‘0’和‘1’相加結果。還要注意最後的順序是反的,要反轉一下。最後進位若為‘1’的話也要加上。
class Solution { public: string addBinary(string a, string b) { int ax=a.size()-1; int bx=b.size()-1; char jinwei='0'; string str; for(; ax>=0 && bx>=0; --ax, --bx) { if(a[ax]=='0' && b[bx]=='0') { str+=jinwei; jinwei='0'; } else if((a[ax]=='0' && b[bx]=='1') || (a[ax]=='1' && b[bx]=='0')){ if('0'==jinwei) { str+='1'; jinwei='0'; } else { str+='0'; jinwei='1'; } } else if('1'==a[ax]&&'1'==b[bx]){ if('0'==jinwei) { str+='0'; jinwei='1'; } else { str+='1'; jinwei='1'; } } } while(ax >= 0) { if('0'==a[ax]){ str+=jinwei; jinwei='0'; }else { if('0'==jinwei) { str+='1'; jinwei='0'; }else{ str+='0'; jinwei='1'; } } --ax; } while(bx >= 0) { if('0'==b[bx]){ str+=jinwei; jinwei='0'; }else { if('0'==jinwei) { str+='1'; jinwei='0'; }else{ str+='0'; jinwei='1'; } } --bx; } if('1'==jinwei){ str+='1'; } string ret; for(ax=str.size()-1; ax>=0; --ax) { ret+=str[ax]; } return ret; } };