lintcode --二进制求和
2017-07-25 09:59
309 查看
给定两个二进制字符串,返回他们的和(用二进制表示)。您在真实的面试中是否遇到过这个题? Yes样例a =
11b =
1返回
100
/* 思路: 和求两个链表的和很类似 ,考虑进位,考虑最后一项的进位 0+0 = 0 不需要进位 0+1 = 1 不需要进位 1+1 =0 进位 1 同时注意 低位进1,高位时1+1的情况,直接加就是3了, 这个需要进位1 ,原位的结果也是1的情况 */ public class Solution { public String addBinary(String a, String b) { int alen = a.length()-1; int blen = b.length()-1; int carries = 0;//进位 String rst = ""; while(blen >= 0&&alen >=0){//因为a>b int sum = (int)(a.charAt(alen) - '0') + (int)(b.charAt(blen) - '0') + carr4000ies; //char ch='0'; ch的值是字符'0'的ascii码值,即0x30 //String s = "110";int c =(int) (s.charAt(1)-0);//0 则c =49 //如果是0,只是加进位,不是的话可以再加原来的 rst = String.valueOf(sum % 2) + rst;// carries = sum / 2; alen --; blen --; } while(alen >= 0){//只有alen的时候 int sum = (int)(a.charAt(alen) - '0') + carries; rst = String.valueOf(sum % 2) + rst; carries = sum / 2; alen --; } while(blen >= 0){//只有alen的时候 int sum = (int)(b.charAt(blen) - '0') + carries; rst = String.valueOf(sum % 2) + rst; carries = sum / 2; blen --; } if (carries == 1)//最后的时候 rst = '1' + rst; return rst; } }
相关文章推荐
- 二进制求和,lintcode
- 二进制求和(LintCode)
- LintCode之408 二进制求和
- 【LintCode-408】二进制求和(Java实现)
- LintCode【容易】二进制求和
- LintCode 二进制求和
- Lintcode 408 二进制求和
- LIntCode-二进制求和
- LintCode | 408. 二进制求和
- lintCode(408)——二进制求和
- 二进制求和-LintCode
- lintcode ----二进制求和
- LintCode(容易)二进制求和遇到的bug
- lintcode 二进制求和 给定两个二进制字符串,返回他们的和(用二进制表示)。
- lintcode,167,链表求和
- lintcode-206-区间求和 I
- LintCode-第168题 链表求和
- LintCode 二叉树路径求和
- LintCode 链表求和
- lintcode--二进制时间