Add Binary 算法详解
来源:互联网 发布:网络终端是什么意思 编辑:程序博客网 时间:2024/06/14 06:02
算法题目:Given two binary strings, return their sum (also a binary string).
For example,
a = “11”
b = “1”
Return “100”
大致意思:二进制字符串的加法
解题思路:可以用循环与递归来求解
循环版本:
string addBinary(string a, string b) { int c=0; int len1=a.size(); int len2=b.size(); string ret(max(len1,len2),'0'); int i=a.size()-1; int j=b.size()-1; int k=ret.size()-1; int m=0; while(k>=0) { m+=c; if(i>=0) { m+=(a[i]-'0'); } if(j>=0) { m+=(b[j]-'0'); } c=m/2; ret[k]+=m%2; m=0; i--; j--; k--; } return c>0?string(1,c+'0')+ret:ret; }
递归版本:
string addBinaryCore(string a,string b,int c) { if(a.size()==0&&b.size()==0&&c==0)return ""; string substra(""); string substrb(""); int ca=0; int cb=0; if(a.size()!=0) { substra=a.substr(0,a.size()-1); ca=a[a.size()-1]-'0'; } if(b.size()!=0) { substrb=b.substr(0,b.size()-1); cb=b[b.size()-1]-'0'; } int m=(ca+cb+c)%2; c=(ca+cb+c)/2; return addBinaryCore(substra,substrb,c)+string(1,m+'0'); } string addBinary(string a, string b) { return addBinaryCore(a,b,0); }
0 0
- Add Binary 算法详解
- 【Leetcode算法】- Add Binary
- 算法系列——Add Binary
- 15算法课程 67. Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- textarea全屏显示(jquery.textareafullscreen.js插件)
- java动态代理(JDK和cglib)
- 旋转数组查找, 二分查找的递归于非递归实现
- 标签语义化以及使用好处
- 2015062210 - 爬楼梯
- Add Binary 算法详解
- 详解单例模式
- ApiDemo/FragmentRetainInstance 解析
- 网络交换机设备
- 21.判断字符串是否为回文
- java学习之旅08--浮点数_浮点数误差问题
- leetcode-35-Search Insert Position
- 2015年6月22日(6285小时时),终于拿到了第一笔兼职的现金
- (数据结构)顺序表的建立,增删查改