标签:
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
class Solution { public: std::string addBinary(std::string a, std::string b) { int la = a.size(); int lb = b.size(); int len = std::min(la,lb); std::reverse(a.begin(),a.end()); std::reverse(b.begin(),b.end()); std::string c; int s = 0; for (int i = 0; i < len; i++) { s += a[i] - '0' + b[i] - '0'; c.insert(c.begin(),s % 2 + '0'); s /= 2; } if(la < lb) { for (int i = la; i < lb; i++) { s += b[i] - '0'; c.insert(c.begin(),s % 2 + '0'); s /= 2; } } else { for (int i = lb; i < la; i++) { s += a[i] - '0'; c.insert(c.begin(),s % 2 + '0'); s /= 2; } } if(s > 0) { c.insert(c.begin(),s + '0'); } #if 0 for (int i = 0; i < c.size(); i++) { std::cout << c[i]; } std::cout << std::endl; #endif // 1 return c; } };
标签:
原文地址:http://www.cnblogs.com/hrhguanli/p/5045052.html