Add Binary(二进制字符串相加)

来源:互联网 发布:java猜数字文档 编辑:程序博客网 时间:2024/05/16 04:37

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;    }};


0 0