菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
184
0

[leetcode] Add Binary

原创
05/13 14:22
阅读数 196274

标签:com   class   blog   http   div   code   img   style   java   javascript   string   

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

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

给定两个二进制的字符串,返回他们的和。

对于a,b两个二进制字符串,首先通过交换使a的长度小于b的长度。然后在a前面补0令ab的长度相同。然后从最后一位开始往前逐步使用加法规则相加,需要注意的是carry表示前一位向这一位的进位,如果在第k位时,a[i]+b[i]+carry <= 1,则需要把carry清零。

最后判断carry是否为零,若不为零则在前面添加一个carry。

代码如下:

bubuko.com,布布扣
 1 class Solution {
 2 public:
 3     string addBinary(string a, string b) {
 4 
 5 
 6         if( a.length() > b.length() )
 7         {
 8             string tmp = a;
 9             a = b;
10             b = tmp;
11         }
12         
13         string zero = "0";
14 
15         while( a.length() != b.length() )
16         {
17             a = zero + a;
18         }
19 
20 
21         int len = b.length();
22         int carry = 0;
23 
24         string res = "";
25         for( int i = 1 ; i <= len ; i++ )
26         {
27             int cur = 0;
28             cur = a[len-i] - 0 + b[len-i] - 0 + carry;
29             if( cur > 1 )
30             {
31                 cur -= 2;
32                 carry = 1;
33             }
34             else
35             {
36                 carry = 0;
37             }
38             char tmp = cur + 0;
39             res = tmp + res; 
40         }
41 
42         if( carry != 0 )
43         {
44             char tmp = carry + 0;
45             res = tmp + res;
46         }
47 
48         return res;
49     }
50 };
bubuko.com,布布扣

 

[leetcode] Add Binary,布布扣,bubuko.com

[leetcode] Add Binary

发表评论

0/200
184 点赞
0 评论
收藏
为你推荐 换一批