leetcode:67 Add Binary-每日编程第四十三题
2015-12-29 11:22
330 查看
Add Binary
Total
Accepted: 67578 Total
Submissions: 261262 Difficulty: Easy
Given two binary strings, return their sum (also a binary string).
For example,
a =
b =
Return
class Solution {
public:
void addBinary(string& str,string& a,string& b,int len1,int len2,bool carryBit)
{
if(len1==-1&&len2==-1){
if(carryBit){
str+='1';
return;
}else{
return ;
}
}
if(len1==-1){
if(!carryBit){
char ch=b[len2];
addBinary(str,a,b,len1,len2-1,false);
str+=ch;
}else{
if(b[len2]=='1'){
char ch='0';
addBinary(str,a,b,len1,len2-1,true);
str+=ch;
}else{
char ch='1';
addBinary(str,a,b,len1,len2-1,false);
str+=ch;
}
}
}else if(len2==-1){
if(!carryBit){
char ch=a[len1];
addBinary(str,a,b,len1-1,len2,false);
str+=ch;
}else{
if(a[len1]=='1'){
char ch='0';
addBinary(str,a,b,len1-1,len2,true);
str+=ch;
}else{
char ch='1';
addBinary(str,a,b,len1-1,len2,false);
str+=ch;
}
}
}else{
char ch=a[len1]+b[len2]-'0';
if(ch=='2'){
if(carryBit){
ch='1';
}else{
ch='0';
}
addBinary(str,a,b,len1-1,len2-1,true);
str+=ch;
}else if(ch=='1'){
if(carryBit){
ch='0';
addBinary(str,a,b,len1-1,len2-1,true);
str+=ch;
}else{
addBinary(str,a,b,len1-1,len2-1,false);
str+=ch;
}
}else{
if(carryBit){
ch='1';
}
addBinary(str,a,b,len1-1,len2-1,false);
str+=ch;
}
}
}
string addBinary(string a, string b) {
int len1=a.length()-1;
int len2=b.length()-1;
if(a==""){
return b;
}else if(b==""){
return a;
}
string str;
addBinary(str,a,b,len1,len2,false);
return str;
}
};
Total
Accepted: 67578 Total
Submissions: 261262 Difficulty: Easy
Given two binary strings, return their sum (also a binary string).
For example,
a =
"11"
b =
"1"
Return
"100".
class Solution {
public:
void addBinary(string& str,string& a,string& b,int len1,int len2,bool carryBit)
{
if(len1==-1&&len2==-1){
if(carryBit){
str+='1';
return;
}else{
return ;
}
}
if(len1==-1){
if(!carryBit){
char ch=b[len2];
addBinary(str,a,b,len1,len2-1,false);
str+=ch;
}else{
if(b[len2]=='1'){
char ch='0';
addBinary(str,a,b,len1,len2-1,true);
str+=ch;
}else{
char ch='1';
addBinary(str,a,b,len1,len2-1,false);
str+=ch;
}
}
}else if(len2==-1){
if(!carryBit){
char ch=a[len1];
addBinary(str,a,b,len1-1,len2,false);
str+=ch;
}else{
if(a[len1]=='1'){
char ch='0';
addBinary(str,a,b,len1-1,len2,true);
str+=ch;
}else{
char ch='1';
addBinary(str,a,b,len1-1,len2,false);
str+=ch;
}
}
}else{
char ch=a[len1]+b[len2]-'0';
if(ch=='2'){
if(carryBit){
ch='1';
}else{
ch='0';
}
addBinary(str,a,b,len1-1,len2-1,true);
str+=ch;
}else if(ch=='1'){
if(carryBit){
ch='0';
addBinary(str,a,b,len1-1,len2-1,true);
str+=ch;
}else{
addBinary(str,a,b,len1-1,len2-1,false);
str+=ch;
}
}else{
if(carryBit){
ch='1';
}
addBinary(str,a,b,len1-1,len2-1,false);
str+=ch;
}
}
}
string addBinary(string a, string b) {
int len1=a.length()-1;
int len2=b.length()-1;
if(a==""){
return b;
}else if(b==""){
return a;
}
string str;
addBinary(str,a,b,len1,len2,false);
return str;
}
};
相关文章推荐
- java 迭代算法使用—找节点路径
- Python 迭代器 & __iter__方法
- eclipse
- C#中xml序列化和反序列化
- php 去掉字符串的最后一个字符
- java.util.ConcurrentModificationException 出现的原因和解决办法
- VS 中 QT添加应用程序图标
- Intent中的四个重要属性——Action、Data、Category、Extras
- c#中SOAP序列化和反序列化
- Ubuntu 下Eclipse没有菜单的解决办法
- python中文件的打开与关闭
- C/C++语言的存储类型
- 动态规划算法求lcs(最长公共子串)之Java代码实现
- java中的volatile的用法
- C++指针比较的问题
- python知识-正则表达式
- 第一行代码第五章中BroadcastTest2运行崩溃
- Struts2之拦截器的简单应用
- Win10下JAVA环境变量配置
- leetcode:14 Longest Common Prefix-每日编程第四十二题