LeetCode Add Binary
来源:互联网 发布:vb中"clear"是什么意思 编辑:程序博客网 时间:2024/05/16 06:56
原题链接在这里: https://leetcode.com/problems/add-binary/
这道题与Plus One相似。都是维护一个currentDigit(%) 和一个carryDigit(/).
Time O(max(m,n)), Space O(max(m,n)), m = a.length(), n = b.length()
Note:1. 注意是从String的尾部算起,所以注意i 和index的关系;
2. 若是算到最后,carryDigit还是1的话就是有一个最后的进位,要在res的首位加起来。
AC Java:
public class Solution { public String addBinary(String a, String b) { if(a==null && b==null && a.length()==0 && b.length()==0){ return ""; } int len1 = a.length(); int len2 = b.length(); StringBuilder res = new StringBuilder(); int carryDigit = 0; int currentDigit; int i = 0; while(i<len1 && i<len2){ currentDigit = (Character.getNumericValue(a.charAt(len1-1-i)) + Character.getNumericValue(b.charAt(len2-1-i)) + carryDigit)%2; carryDigit = (Character.getNumericValue(a.charAt(len1-1-i)) + Character.getNumericValue(b.charAt(len2-1-i)) + carryDigit)/2; if(currentDigit == 0){ res.insert(0,"0"); }else{ res.insert(0,"1"); } i++; } if(len1 > len2){ while(i<len1){ currentDigit = (Character.getNumericValue(a.charAt(len1-1-i)) + carryDigit)%2; carryDigit = (Character.getNumericValue(a.charAt(len1-1-i)) + carryDigit)/2; if(currentDigit == 0){ res.insert(0,"0"); }else{ res.insert(0,"1"); } i++; } } if(len1 < len2){ while(i<len2){ currentDigit = (Character.getNumericValue(b.charAt(len2-1-i)) + carryDigit)%2; carryDigit = (Character.getNumericValue(b.charAt(len2-1-i)) + carryDigit)/2; if(currentDigit == 0){ res.insert(0,"0"); }else{ res.insert(0,"1"); } i++; } } if(carryDigit != 0){ res.insert(0,"1"); } return res.toString(); }}
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
- 一个优秀程序员的成长之路
- 黑马程序员——String
- 解决A master URL must be set in your configuration
- java 回调 的来龙去脉
- 黑马程序员——集合类
- LeetCode Add Binary
- Android 之夜间模式(多主题)的实现思路
- hdu 4738 Caocao's Bridges
- 编程语言
- 九月腾讯,创新工场,淘宝等公司最新面试三十题(第171-200题)
- 在C、C++中调用Matlab
- C语言-scanf与printf的格式控制
- 将一个正整数分解质因数
- Spark中文手册10:spark部署:提交应用程序及独立部署模式