【Leetcode】【Easy】Add Binary

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

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

 

解题思路:

从两个子字符尾部遍历字符;

每次得到新的字符插入结果字符串的头部;

 

解题步骤:

1、建立返回string、从后向前遍历的idx:idx_a / idx_b、进位量
2、循环开始,当idx_a或者idx_b任意不为0时,循环继续:
 (1)临时整形sum = 进位值;
 (2)如果idx_a不为0,则加上a[idx_a - 1],idx_a--;同理对idx_b;
 (3)更新进位值和sum,并将sum以字符的形式插入返回string的头部;
3、如果循环结束时进位值不为0,则在返回string头部添加一位。

代码:

 1 class Solution {
 2 public:
 3     string addBinary(string a, string b) {
 4         int len_a = a.size();
 5         int len_b = b.size();
 6         int sig_flag = 0;
 7         string ret;
 8         
 9         while (len_a || len_b) {
10             int curd = sig_flag;
11             if (len_a) {
12                 curd += a[len_a - 1] - '0';
13                 len_a--;
14             }
15             
16             if (len_b) {
17                 curd += b[len_b - 1] - '0';
18                 len_b--;
19             }
20             
21             sig_flag = curd / 2;
22             curd = curd % 2;
23             ret.insert(0, 1, '0' + curd);
24         }
25         
26         if (sig_flag)
27           ret.insert(0, 1, '1');
28           
29         return ret;
30     }
31 };

 

 

附录:

string操作

int char string

posted @ 2014-12-03 23:19  胡潇  阅读(143)  评论(0编辑  收藏  举报