90个题了,真心不容易。
两个字符串的二进制加法。找一个int来存储进位。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
class Solution {
public:
string addBinary(string a, string b) {
string ans = "";
int lenMin = a.length() < b.length()?a.length():b.length();
int inbit = 0;
for(int i = 0;i < lenMin;i++) {
int aVal = a[a.length()-1-i] - '0';
int bVal = b[b.length()-1-i] - '0';
int sum = inbit + aVal + bVal;
inbit = sum / 2;
ans.push_back(sum%2 + '0');
}
if(a.length() > b.length()) {
for(int i = lenMin;i < a.length();i++) {
int Val = a[a.length()-1-i] - '0' + inbit;
inbit = Val / 2;
ans.push_back(Val%2 + '0');
}
}
else {
for(int i = lenMin;i < b.length();i++) {
int Val = b[b.length()-1-i] - '0' + inbit;
inbit = Val / 2;
ans.push_back(Val%2 + '0');
}
}
if(inbit != 0) {
ans.push_back(inbit + '0');
}
string ansr(ans.rbegin(),ans.rend());
return ansr;
}
};
|