【Leetcode】Add Binary

【题目】

Given two binary strings, return their sum (also a binary string).

For example,
a = "11"
b = "1"
Return "100".

【代码】

class Solution {
public:
    string addBinary(string a, string b) {
         if(a.length()<b.length()){
            string temp=a;
            a=b;
            b=temp;
        }
        vector<char> vec;
        vec.clear();
        int m=a.length(),n=b.length(),flag=0;
        for(int i=n-1;i>=0;--i){
            int sum=(a[i+m-n]-'0')+(b[i]-'0')+flag;
            if(sum<2){
                flag=0;
                vec.push_back((char)(sum+'0'));
            }
            else{
                flag=1;
                vec.push_back((char)((sum-2)+'0'));
            }
        }
        if(m>n){
            for(int i=m-n-1;i>=0;--i){
                int sum=a[i]-'0'+flag;
                if(sum<2){
                    flag=0;
                    vec.push_back((char)(sum+'0'));
                }
                else{
                    flag=1;
                    vec.push_back((char)((sum-2)+'0'));
                }
            }
        }
        if(1==flag) vec.push_back('1');
        string ret="";
        for(int i=vec.size()-1;i>=0;--i) ret+=vec[i];
        return ret;
    }
};

【总结】

注意两个问题:

1.字符和数字之间的转换:

字符转换为数字:char ch='a'; int num=ch-'0';

数字转换为字符:int num=1; char ch=(char)(num+'0');

2.进位,最后一个进位要考虑的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值