[LeetCode] 67. Add Binary java
来源:互联网 发布:西门子s7 200编程软件 编辑:程序博客网 时间:2024/06/05 20:44
/**67. Add Binary * @param a * @param b * @returnString 字符串模拟二进制位相加运算 */ public String addBinary(String a, String b) { if (a == null || a.length() ==0) return b; if (b == null || b.length() == 0) return a; String ret = ""; char add = '0'; int i=a.length()-1, j=b.length()-1; while (i>=0 && j>=0) { int sum = (a.charAt(i)-'0') + (b.charAt(j)-'0') + (add - '0'); if (sum >= 2) { add = '1'; String s = (sum-2)==0? "0" :"1"; ret = s+ret; } else { add = '0'; ret = String.valueOf(sum)+ret; } i--; j--; } while(i>=0) { int sum = (a.charAt(i)-'0') + (add - '0'); if (sum >= 2) { add = '1'; String s = (sum-2)==0? "0" :"1"; ret = s+ret; }else { add = '0'; ret = String.valueOf(sum)+ret; } i--; } while(j>=0) { int sum = (b.charAt(j)-'0') + (add - '0'); if (sum >= 2) { add = '1'; String s = (sum-2)==0? "0" :"1"; ret = s+ret; }else { add = '0'; ret = String.valueOf(sum)+ret; } j--; } if (add != '0') { ret = String.valueOf(add) + ret; } return ret; }
用add存储每次相加时的进位
记得最后循环结束后,要再次加一次add
改进:
public String addBinary1(String a, String b) { int m = a.length(); int n = b.length(); int carry = 0; String res = ""; int maxLen = Math.max(m, n); for (int i = 0; i < maxLen; i++) { int p = 0, q = 0; if (i < m) p = a.charAt(m - 1 - i) - '0'; else p = 0; if (i < n) q = b.charAt(n - 1 - i) - '0'; else q = 0; int tmp = p + q + carry; carry = tmp / 2; res += tmp % 2; } return (carry == 0) ? res : "1" + res; }
二进制加法都是从最低位(从右加到左)。所以对两个字符串要从最后一位开始加,如果遇见长度不一的情况,就把短的字符串高位补0.
每轮计算要加上进位,最后跳出循环后要坚持进位是否为1,以便更新结果。
0 0
- (Java)LeetCode-67. Add Binary
- 【leetcode】67. Add Binary【java】
- [LeetCode] 67. Add Binary java
- [leetcode]67. Add Binary@Java
- [Leetcode] Add Binary (Java)
- Add Binary @ LeetCode java
- [LeetCode][Java] Add Binary
- leetcode:Add Binary 【Java】
- 【leetcode】Add Binary-----Java
- Leetcode:67. Add Binary(JAVA)
- [LeetCode]67.Add Binary
- LeetCode --- 67. Add Binary
- [Leetcode] 67. Add Binary
- [leetcode] 67.Add Binary
- 【leetcode】67. Add Binary
- [leetcode] 67.Add Binary
- [leetcode] 67. Add Binary
- 【Leetcode】67. Add Binary
- 网站入侵思路(初级黑客渗透篇)
- JVM内存区域划分Eden Space、Survivor Space、Tenured Gen,Perm Gen解释
- 内核中的内存申请:kmalloc、vmalloc、kzalloc、kcalloc、get_free_pages
- PostgreSQL与MySQL数据库的区别
- 循环队列,类之间的互动
- [LeetCode] 67. Add Binary java
- Android之 VersionCode,VersionName(1)版本号和版本名称的重要性介绍
- web项目部署在阿里云
- iOS在控制器导航栏右上角添加按钮
- 找到自己真实的热情和兴趣所在
- web安全思路
- [LeetCode] 5. Longest Palindromic Substring java
- 使用Mybatis时实体类属性名和表中的字段名不一致导致结果无法映射到实体类的解决办法
- 程序员转行为什么这么难