二进制求和
2016-05-26 14:52
274 查看
给定两个二进制字符串,返回他们的和(用二进制表示)
a =
b =
返回
#include <iostream>
#include <string>
using namespace std;
class Solution {
public:
/**
* @param a a number
* @param b a number
* @return the result
*/
string addBinary(string& a, string& b) {
// Write your code here
int aLength = a.size()- 1;
int bLength = b.size()- 1;
int c=0;
int i,j,sum=0;
string result= "";
if(aLength >= bLength){
for( i = 0; i <= bLength; i++){
int digb = (b[bLength-i]-'0')%2;
int diga = (a[aLength-i]-'0')%2;
int sum = diga + digb + c;
if(sum > 1 ){
c = 1;
sum= sum % 2;
}
else{
c=0;
sum= sum % 2;
}
if(sum==0)
result = "0" + result;
else
result = "1" + result;
}
for( j = bLength+1; j<= aLength;j++){
int diga = (a[aLength-j]-'0')%2;
sum = diga + c;
if(sum > 1 ){
c = 1;
sum= sum % 2;
}
else{
c=0;
sum= sum % 2;
}
if(sum==0)
result = "0" + result;
else
result = "1" + result;
}
if(c==1)
result = "1" + result;
}
else
{
for( i = 0; i <= aLength; i++){
int digb = (b[bLength-i]-'0')%2;
int diga = (a[aLength-i]-'0')%2;
int sum = diga + digb + c;
if(sum > 1 ){
c = 1;
sum= sum % 2;
}
else{
c=0;
sum= sum % 2;
}
if(sum==0)
result = "0" + result;
else
result = "1" + result;
}
for( j = aLength+1; j<= bLength;j++){
int digb = (b[bLength-j]-'0')%2;
sum = digb + c;
if(sum > 1 ){
c = 1;
sum= sum % 2;
}
else{
c=0;
sum= sum % 2;
}
if(sum==0)
result = "0" + result;
else
result = "1" + result;
}
if(c==1)
result = "1" + result;
}
return result;
}
};
int main()
{
string s1 = "1111";
string s2 = "1111";
Solution st;
cout << st.addBinary(s1, s2);
return 0;
}
a =
11
b =
1
返回
100
#include <iostream>
#include <string>
using namespace std;
class Solution {
public:
/**
* @param a a number
* @param b a number
* @return the result
*/
string addBinary(string& a, string& b) {
// Write your code here
int aLength = a.size()- 1;
int bLength = b.size()- 1;
int c=0;
int i,j,sum=0;
string result= "";
if(aLength >= bLength){
for( i = 0; i <= bLength; i++){
int digb = (b[bLength-i]-'0')%2;
int diga = (a[aLength-i]-'0')%2;
int sum = diga + digb + c;
if(sum > 1 ){
c = 1;
sum= sum % 2;
}
else{
c=0;
sum= sum % 2;
}
if(sum==0)
result = "0" + result;
else
result = "1" + result;
}
for( j = bLength+1; j<= aLength;j++){
int diga = (a[aLength-j]-'0')%2;
sum = diga + c;
if(sum > 1 ){
c = 1;
sum= sum % 2;
}
else{
c=0;
sum= sum % 2;
}
if(sum==0)
result = "0" + result;
else
result = "1" + result;
}
if(c==1)
result = "1" + result;
}
else
{
for( i = 0; i <= aLength; i++){
int digb = (b[bLength-i]-'0')%2;
int diga = (a[aLength-i]-'0')%2;
int sum = diga + digb + c;
if(sum > 1 ){
c = 1;
sum= sum % 2;
}
else{
c=0;
sum= sum % 2;
}
if(sum==0)
result = "0" + result;
else
result = "1" + result;
}
for( j = aLength+1; j<= bLength;j++){
int digb = (b[bLength-j]-'0')%2;
sum = digb + c;
if(sum > 1 ){
c = 1;
sum= sum % 2;
}
else{
c=0;
sum= sum % 2;
}
if(sum==0)
result = "0" + result;
else
result = "1" + result;
}
if(c==1)
result = "1" + result;
}
return result;
}
};
int main()
{
string s1 = "1111";
string s2 = "1111";
Solution st;
cout << st.addBinary(s1, s2);
return 0;
}
相关文章推荐
- 二值化算法之(三) --- P-tile阈值分割算法
- 计算机RAM内存储存值
- NANOPI2 编译QT+sqlite 问题解决方式
- layoutinflate.inflate方法的使用
- 实现v9内容页url规则增加汉字拼音功能
- 『Python学习』lettcode题目答案python版
- IIS 7.5, ASP.NET MVC. HTTP Error 500 (Internal Server Error) 但是调试又不进入后台,浏览器只报500错误
- Xcode --自动注释插件VVDocumenter-Xcode(安装须知)
- 怎样最快卖掉房子 二手房怎样才能卖个好价钱?
- python 后台运行
- 详解linux下的串口通讯开发
- WampServer 的phpmyadmin数据
- 关于AsynTask在执行onExcute之后,很久之后才执行doInBackGround的问题
- Apache Curator Leader选举 简单示例
- Linux(Centos)下Redis开机自启设置
- mysql通过ip地址无法连接
- Druid连接池简介和配置
- Eclipse 调试器:零距离接触实战技巧
- Ubuntu 14.04LTS升级提示/boot空间不足的解决办法
- Ubuntu配置Caffeonspark教程