LintCode-二进制求和
来源:互联网 发布:杭州信雅达java怎么样 编辑:程序博客网 时间:2024/05/09 14:19
public static String addBinary(String a,String b) { //先令两个字符串相等,短的那个在前面补0 String result = ""; int al = a.length(); int bl = b.length(); int max = Math.max(al, bl); if(max == al) { for(int i = 0 ; i < max - bl ; i++) { b = "0" + b; } } else { for(int i = 0 ; i < max - al ; i++) { a = "0" + a; } } char aa; char bb; //设置进位标志 boolean next = false; for(int i = a.length() - 1 ; i >=0 ; i--) { //倒序取出两个字符串的每个字符 aa = a.charAt(i); bb = b.charAt(i); //如果两位都是0:无论前一位是否有进位,都不会向下一位进位,因此next设为false,如果前一位有进位,那么这位结果为1,否则这位结果为0 if(aa == bb && aa == '0') { if(next) { result = 1 + result; next = false; } else { result = 0 + result; } //如果有一个为1令一个为0:如果前一位有进位:这位结果为0,并且向下一位进位;否则这一位结果为1,不会向下一位进位。 } else if(aa != bb) { if(next) { result = 0 + result; next = true; } else { result = 1 + result; } //最后如果两位都是1: 无论前一位是否有进位,这位都会向下一位进位,所以next设为true,当上一位有进位的时候,该位为1,否则为0 } else { if(next) { result = 1 + result; } else { result = 0 + result; } next = true; } } //当循环完成的时候,也就是说每一位都相加完成,这时如果有进位,那么就讲result的下一位设为1,返回结果 if(next == true) { result = 1 + result; } return result; }
0 0
- LintCode-二进制求和
- LIntCode-二进制求和
- 二进制求和(LintCode)
- lintcode ----二进制求和
- LintCode之二进制求和
- Lintcode 408 二进制求和
- LintCode【容易】二进制求和
- 二进制求和,lintcode
- LintCode | 408. 二进制求和
- LintCode 二进制求和
- lintcode --二进制求和
- Lintcode二进制求和
- 二进制求和-LintCode
- LintCode Add Binary 二进制求和
- lintcode add-binary 二进制求和
- LintCode(容易)二进制求和
- lintCode(408)——二进制求和
- LintCode(容易)二进制求和遇到的bug
- POJ 2155 Matrix (二维树状数组,区间更新,点查找)
- USACO-Section 1.3 Prime Cryptarithm(枚举)
- [JQ权威指南]第十二天:使用Jquery事件改变文本框的样式
- POJ 1002 487-3279
- GIT工作区、暂存区的区别和相关命令
- LintCode-二进制求和
- (4) php面向对象(OOP)编程完全教程
- HDU 4300 Clairewd’s message(KMP)
- expdp\impdp及exp\imp
- ArrayOfString转换为String[]
- matchShapes函数
- JIRA介绍
- 【C++】单链表的基本操作
- 视频录制命令 screenrecord