LintCode | 408. 二进制求和
来源:互联网 发布:金元证券交易软件下载 编辑:程序博客网 时间:2024/05/21 10:34
给定两个二进制字符串,返回他们的和(用二进制表示)。
比较蠢的办法
public class Solution { public String addBinary(String a, String b) { //分别用 max min 指向长度最长 最短字符串 String max, min; if(a.length() > b.length()) { max = a; min = b; } else { max = b; min = a; } //逐位计算,用 StringBuilder 来保存 StringBuilder sum = new StringBuilder(""); //进位标志 int carry = 0; //先进行短字符串长度部分的位运算 for(int i = 1; i < min.length() + 1; i++) { //每次循环取出两个字符串的同一位 char ai = a.charAt(a.length() - i); char bi = b.charAt(b.length() - i); //分别判断各位情况,注意进位 if(ai == '0' && bi == '0') { sum.insert(0, carry); carry = 0; } else if(ai != bi) { if(carry == 0) sum.insert(0, 1); else sum.insert(0, 0); } else if(ai == '1' && bi == '1') { if(carry == 0) sum.insert(0, 0); else sum.insert(0, 1); carry = 1; } } //短字符串长度部分比较完后,再单独计算长字符串多出来的部分 for(int i = max.length() - min.length() - 1; i >= 0; i--) { if(carry == 1) { if(max.charAt(i) == '1') { sum.insert(0, 0); carry = 1; } else { sum.insert(0, 1); carry = 0; } } else { sum.insert(0, max.substring(0, i+1)); break; } } //最后,对于最高位有进位的情况补1 if(carry == 1) sum.insert(0, 1); return sum.toString(); }}
0 0
- LintCode | 408. 二进制求和
- LintCode-二进制求和
- LIntCode-二进制求和
- 二进制求和(LintCode)
- lintcode ----二进制求和
- LintCode之二进制求和
- Lintcode 408 二进制求和
- LintCode【容易】二进制求和
- 二进制求和,lintcode
- LintCode 二进制求和
- lintcode --二进制求和
- Lintcode二进制求和
- 二进制求和-LintCode
- LintCode Add Binary 二进制求和
- lintcode add-binary 二进制求和
- LintCode(容易)二进制求和
- lintCode(408)——二进制求和
- LintCode(容易)二进制求和遇到的bug
- 安卓开发之——AndroidSDK环境配置
- 二分查找法(递归和非递归实现)
- Java实现堆排序算法
- 进程终止分析之一
- VQA数据集及评价方法介绍
- LintCode | 408. 二进制求和
- 理解jvm类加载机制(双亲委派模型)
- Android自动打包发包 利用Jenkins
- s3c2451_gpio函数
- 李白打酒(DFS小例子)
- 欢迎使用CSDN-markdown编辑器
- 第三周作业2(LeetCode75)
- 关于操作数据库增删改查
- 系统API接口库中的STDIN_FILENO介绍以及与stdin的区分