Given two binary strings, return their sum (also a binary string).
For example, a = "11" b = "1" Return
"100".
string 的操作,短string补位。两个“0”会输出一个“00”,要特殊处理,plus如果最后为“1”,要补上。
|
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76 |
class
Solution {public: char
getBit(string s, int
n) { if(n >= s.length()) { return
‘0‘; } else { return
s[n]; } } char
Add(char
a, char
b, char
c, char
&remain) { if(a == ‘1‘
&& b==‘1‘
&& c==‘1‘) { remain = ‘1‘; return
‘1‘; } if((a == ‘1‘
&& b == ‘1‘) || (a == ‘1‘
&& c == ‘1‘) || (c == ‘1‘
&& b == ‘1‘)) { remain =‘0‘; return
‘1‘; } if(a == ‘0‘
&& b ==‘0‘
&& c ==‘0‘) { remain = ‘0‘; return
‘0‘; } remain = ‘1‘; return
‘0‘; } string addBinary(string a, string b) { int
n1 = a.length(); int
n2 = b.length(); int
n = n1; if(n1 > n2) { n = n1; b = string(n1-n2, ‘0‘) + b; } else
if(n1 < n2) { n = n2; a = string(n2-n1, ‘0‘) + a; } if(a=="0"
&& b =="0") return
"0"; string sum = "FIRST"; char
plus = ‘0‘; char
remain = ‘0‘; for(int
i = n-1; i>=0 ;i--) { plus = Add(a[i],b[i],plus, remain); if(sum == "FIRST") { sum = string (1, remain); } else { sum = string(1,remain) + sum; } } if(plus == ‘1‘) { sum = string(1,plus) + sum; } return
sum; }}; |
[LeetCode] [Add Binary 2012-04-02 ],布布扣,bubuko.com
[LeetCode] [Add Binary 2012-04-02 ]
原文:http://www.cnblogs.com/xxiao1119/p/3729823.html