【LintCode-408】二进制求和(Java实现)
来源:互联网 发布:逗鱼时刻知乎 编辑:程序博客网 时间:2024/06/06 19:43
第一次代码记录(不带注释版本):
public String addBinary(String a, String b) { int alength=a.length(); int blength=b.length(); String result=""; int sum =0; while(alength>=1||blength>=1){ if(alength>=1){ sum+=Integer.parseInt(a.substring(alength-1,alength)); alength--; } if(blength>=1){ sum+=Integer.parseInt(b.substring(blength-1,blength)); blength--; } if(sum==2){ result="0"+result; sum=1; }else if(sum==3){ result="1"+result; sum=1; }else{ result=sum+""+result; sum=0; } } if(sum==1){ result="1"+result; } return result; }
第二次代码记录(带完整注释版本):
public String addBinary(String a, String b) { String result=""; //类似于前一章的carry进位状态符 int sum=0; int lengthA=a.length(); int lengthB=b.length(); while(lengthA>0||lengthB>0){ if(lengthA>0){ //截取字符串最后一位,类似获取十进制里的个位 sum+=Integer.parseInt(a.substring(lengthA-1,lengthA)); lengthA--; } if(lengthB>0){ sum+=Integer.parseInt(b.substring(lengthB-1,lengthB)); lengthB--; } //当刚好满足二进制进位条件时 if(sum==2){ //相加刚好等于2,所以前一位剩余0,类似于十进制 4+6时,个位满十进位,个位数值为0 result="0"+result; //这里重新赋予1,是指进位的那一个数值,所以前面代码是用 sum+= 而不是sum= sum=1; }else if(sum==3){ result="1"+result; sum=1; }else{ result=(sum+"")+result; sum=0; } } //用于处理最高位进位 if(sum==1){ result="1"+result; } return result; }
个人解题思路:
模拟一遍二进制求和的过程(详细请看第二次代码注释),需要注意 进位条件(sum=2、3)与 当a,b位数相同而且存在最高位需要进位时(例如“1”,“1”时)
如果您有更好的解法,欢迎您在留言区补充,感谢!!
阅读全文
0 0
- 【LintCode-408】二进制求和(Java实现)
- Lintcode 408 二进制求和
- 二进制求和(LintCode)
- LintCode(容易)二进制求和
- lintCode(408)——二进制求和
- LintCode-第408题 二进制求和
- LintCode-二进制求和
- LIntCode-二进制求和
- lintcode ----二进制求和
- LintCode之二进制求和
- LintCode【容易】二进制求和
- 二进制求和,lintcode
- LintCode | 408. 二进制求和
- LintCode 二进制求和
- lintcode --二进制求和
- Lintcode二进制求和
- 二进制求和-LintCode
- 【LintCode-167】链表求和(Java实现)
- linux中 centos 7 rhel7下 vm虚拟机怎么设置静态ip 开机自动连接网络
- Java开发环境安装及阶段学习需掌握知识
- java 中 String 中 split() 对字符串进行切取
- linux-防火墙有关知识积累
- 多线程编程
- 【LintCode-408】二进制求和(Java实现)
- 字符串是常量,一旦被赋值,就不能被改变
- zcmu-1987
- [LibreOJ 537] DNA 序列
- 周的表示
- 笨办法学Python习题14 提示和传递
- Unity结合ZXing生成二维码并保存
- 网易云深度学习第二课NoteBook2
- 用awk或sed进行数据转换的一个小例子