zoukankan      html  css  js  c++  java
  • 【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

  • 相关阅读:
    Qt 学习之路:Canvas
    Qt 学习之路:模型-视图高级技术
    Qt 学习之路 :视图代理
    Qt 学习之路 :动态视图
    Qt 学习之路 :Repeater
    Qt 学习之路 :Qt Quick Controls
    mysql-gdb--oracle
    redis-BOOK
    2016qconbeijing
    LINUX 内核月报 taobao
  • 原文地址:https://www.cnblogs.com/huxiao-tee/p/4141621.html
Copyright © 2011-2022 走看看