码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode:Add Binary

时间:2014-05-20 11:21:52      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:style   blog   class   c   code   java   

戳我去解题

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

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

分析:高精度加法,只是将10进制的高精度加法 换成了 2进制的高精度加法

首先将 两个加数 反转一下,这样方便 从低位到高位顺序执行进位操作

这里我们有一个非常有用的技巧:

因为是加法操作,如果线性遍历过程中下标超出 加数字符串范围,那么我们将次加数的这个位置设为0

其实这个技巧在 链表加法中也有用到,非常利于统一管理 长度不一情况

bubuko.com,布布扣
class Solution {
public:
    string addBinary(string a, string b) {
          string res;
          int maxlen = max(a.size(), b.size());
          
          reverse(a.begin(), a.end());
          reverse(b.begin(), b.end());
          
          int carry = 0;
          for (int i = 0; i < maxlen; ++i) {
              int acur = (i < a.size() ? a.at(i) - 0 : 0);
              int bcur = (i < b.size() ? b.at(i) - 0 : 0);
              int val = (acur + bcur + carry) % 2;
              carry = (acur + bcur + carry) / 2;
              res.insert(res.begin(), val + 0);
          }
          if (carry == 1) {
              res.insert(res.begin(), 1);
          }
          return res;
    }
};
bubuko.com,布布扣

 

 

Leetcode:Add Binary,布布扣,bubuko.com

Leetcode:Add Binary

标签:style   blog   class   c   code   java   

原文地址:http://www.cnblogs.com/wwwjieo0/p/3737744.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!