zoukankan      html  css  js  c++  java
  • [leetcode] Add Binary

    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。

    代码如下:

     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 };
  • 相关阅读:
    webpack常见问题 收藏
    ES6 模块
    ES6 Class 类
    ES6 迭代器
    ES6 函数
    ES6 数组
    ES6 对象
    记一次pda(安卓)环境配置流程
    类型转换
    DOM事件
  • 原文地址:https://www.cnblogs.com/jostree/p/3695130.html
Copyright © 2011-2022 走看看