2021-12-25
文章目录
二进制数相加
给定两个二进制字符串,返回它们的加和(也是一个二进制字符串的形式)。
string a = "11";
string b = "1";
返回“100”
【解析】:
这是一道很经典的题目,本身并没有算法上的难度。要点是通过数组模拟加法,一位一位地往上加,并注意处理进位。
【code】:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int,int> pii;
const int inf=0x3f3f3f3f;
const int maxn=1e6+5;
string addBinary(string a,string b){
int carry = 0;
string result;
for (int i = a.size() - 1, j = b.size() - 1; i >= 0 || j >= 0;i--,j--){
int ai = i >= 0 ? a[i] - '0' : 0;
int bj = j >= 0 ? b[j] - '0' : 0;
int val = (ai + bj + carry) % 2;
carry = (ai + bj + carry) / 2;
result.insert(result.begin(), val+'0');
}
if(carry==1)
result.insert(result.begin(), '1');
return result;
}
int main(){
string a = "11";
string b = "1";
string result = addBinary(a, b);
cout << result << endl;
return 0;
}