首页 > 其他 > 详细

LeetCode Add Binary

时间:2014-03-25 07:38:02      阅读:361      评论:0      收藏:0      [点我收藏+]
bubuko.com,布布扣
 1 class Solution {
 2 public:
 3     string addBinary(string a, string b) {
 4         string res;
 5         int carry = 0, s = 0;
 6         int apos = a.length() - 1;
 7         int bpos = b.length() - 1;
 8         int astp = 0, bstp = 0;
 9         // skip leading zero(s)
10         for (; astp < apos && a[astp] == 0; astp++);
11         for (; bstp < bpos && b[bstp] == 0; bstp++);
12         // a/b pos validation
13         bool apv = apos >= astp, bpv = bpos >= bstp;
14         // addition
15         while(apv || bpv) {
16             if (apv) s += a[apos] - 0;
17             if (bpv) s += b[bpos] - 0;
18             carry = s > 1;
19             s = s & 0x1;
20             res.push_back(s ? 1 : 0);
21             apos--, bpos--, s = carry;
22             apv = apos >= astp, bpv = bpos >= bstp;
23         }
24         if (carry) res.push_back(1);
25         if (res.empty()) {
26             res.push_back(0);
27         } else {
28             reverse(res.begin(), res.end());
29         }
30         return res;
31     }
32 };
bubuko.com,布布扣

没研究过C++里字符串操作的效率问题,直接使用+进行字符串连接并重新赋值回去不知道额外开销大不大,从提交的结果来看和用push_back的没什么区别,有的甚至更快

LeetCode Add Binary,布布扣,bubuko.com

LeetCode Add Binary

原文:http://www.cnblogs.com/lailailai/p/3622261.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!