LeetCode:Add Binary
来源:互联网 发布:镜之边缘催化剂优化 编辑:程序博客网 时间:2024/06/05 10:52
推荐参照:Leetcode题目难度等级及面试频率总结
题目描述:
Given two binary strings, return their sum (also a binary string).
For example,a =”11”,b =”1”,Return”100”.
思路:
本质和两个十进制数字相加类似,不同之处在于逢2进1。首先,将位数补齐,然后从最后一位开始向前相加。最后将结果反转即可。考虑到输入输出都是字符串形式,故使用StringBuilder,提高效率。注意最后判断进位位是否为1
附: StringBuilder的用法及String,StringBuffer与StringBuilder的区别
import java.util.*;public class Solution { public String addBinary(String a, String b) { StringBuffer sb = new StringBuffer(); int carry = 0; while(a.length() != b.length()){ if(a.length() > b.length()) b = '0' + b; else a = '0' + a; } for(int i = a.length() - 1;i >= 0;i--){ int tempA = a.charAt(i) - '0'; int tempB = b.charAt(i) - '0'; int sum = tempA + tempB + carry; if(sum < 2){ sb.append((char)(sum + '0')); carry = 0; }else { sb.append((char)(sum - 2 + '0')); carry = 1; } } if(carry == 1) sb.append('1'); return sb.reverse().toString(); }}
其实,也无需补0,将上面的代码稍微修改一下,运行时间提高1ms
import java.util.*;public class Solution { public String addBinary(String a, String b) { StringBuilder sb = new StringBuilder(); int i = a.length() - 1, j = b.length() -1, carry = 0; while (i >= 0 || j >= 0) { int sum = carry; if (j >= 0) sum += b.charAt(j--) - '0'; if (i >= 0) sum += a.charAt(i--) - '0'; sb.append(sum % 2); carry = sum / 2; } if (carry != 0) sb.append(carry); return sb.reverse().toString(); }}
Any comments greatly appreciated.
0 0
- LeetCode: Add Binary
- [Leetcode] Add Binary
- LeetCode Add Binary
- Leetcode: Add Binary
- [Leetcode] Add Binary
- LeetCode : Add Binary
- LeetCode Add Binary
- [LeetCode] Add Binary
- leetcode 58: Add Binary
- leetcode Add Binary
- [LeetCode] Add Binary
- 【leetcode】Add Binary
- [LeetCode]Add Binary
- [leetcode]Add Binary
- LeetCode-Add Binary
- [leetcode] Add Binary
- LeetCode - Add Binary
- leetcode:Add Binary
- 蓝桥 史丰收速算
- C++ 内存分配(new,operator new)详解
- 林三撇的记录
- 配置Linux的eth0网卡设置IP地址以及启动方式
- Spring框架模块简述
- LeetCode:Add Binary
- hadoop二次排序实现join
- 所有程序员都应该遵守的11条规则
- M-thplayer正式完工啦!
- 算法导论动态表扩张
- 非递归的方式后序遍历二叉树
- Ehcache优缺点以及分布式详解
- 详解URL的组成
- Android Tinker热修复集成解析