资讯专栏INFORMATION COLUMN

leetcode_67 Add Binary

codeGoogle / 1232人阅读

摘要:,,这道题就是求两个表示为字符串形式的二进制数字的和。最初我的想法是直接对两个字符串相对应的位进行直接运算,再用一个变量来表示进位,这里我选择将较短的字符串前面用补位,以获得两个相同长度的字符串进行逐位运算。

Given two binary strings, return their sum (also a binary string).
For example,a = "11",b = "1",Return "100".

这道题就是求两个表示为字符串形式的二进制数字的和。

最初我的想法是直接对两个字符串相对应的位进行直接运算,再用一个变量来表示进位,这里我选择将较短的字符串前面用0补位,以获得两个相同长度的字符串进行逐位运算。

但其实不需要补位

下面贴出来的代码用了三元表达式进行判断,如果相应长度有数字就取出数字,如果没有数字则赋值为0

随后对ab字符串的相同位置,以及进位的值进行异或运算

public class Solution {
    public String addBinary(String a, String b) {
        if(a == null || a.isEmpty()) {
            return b;
        }
        if(b == null || b.isEmpty()) {
            return a;
        }
        char[] aArray = a.toCharArray();
        char[] bArray = b.toCharArray();
        StringBuilder stb = new StringBuilder();

        int i = aArray.length - 1;
        int j = bArray.length - 1;
        int aByte;
        int bByte;
        int carry = 0;
        int result;

        while(i > -1 || j > -1 || carry == 1) {
            aByte = (i > -1) ? Character.getNumericValue(aArray[i--]) : 0;
            bByte = (j > -1) ? Character.getNumericValue(bArray[j--]) : 0;
            result = aByte ^ bByte ^ carry;
            carry = ((aByte + bByte + carry) >= 2) ? 1 : 0;
            stb.append(result);
        }
        return stb.reverse().toString();
    }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/67098.html

相关文章

  • Leetcode 67Add Binary(二进制求和)

    摘要:给定两个二进制字符串,返回他们的和用二进制表示。返回的数值是以开头,表明返回的数值是二进制函数用于将一个字符串或数字转换为整型。指定为非十进制时,需以字符串形式传入从第三个元素开始截取,忽略 (python、java)Given two binary strings, return their sum (also a binary string).The input strings a...

    chenjiang3 评论0 收藏0
  • Leetcode 67Add Binary(二进制求和)

    摘要:给定两个二进制字符串,返回他们的和用二进制表示。返回的数值是以开头,表明返回的数值是二进制函数用于将一个字符串或数字转换为整型。指定为非十进制时,需以字符串形式传入从第三个元素开始截取,忽略 (python、java)Given two binary strings, return their sum (also a binary string).The input strings a...

    sf190404 评论0 收藏0
  • leetcode67 binary add 二进制加法计算

    摘要:题目要求将两个二进制字符串相加结果以二进制字符串的形式返回要格外注意可能会在最高位存在进位想要了解更多开发技术,面试教程以及互联网公司内推,欢迎关注我的微信公众号将会不定期的发放福利哦 题目要求:将两个二进制字符串相加结果以二进制字符串的形式返回要格外注意可能会在最高位存在进位 /** * @author rale * * Given two binary strings, r...

    DevTTL 评论0 收藏0
  • leetcode部分题目答案之JavaScript版

    摘要:自己没事刷的一些的题目,若有更好的解法,希望能够一起探讨项目地址 自己没事刷的一些LeetCode的题目,若有更好的解法,希望能够一起探讨 Number Problem Solution Difficulty 204 Count Primes JavaScript Easy 202 Happy Number JavaScript Easy 190 Reverse Bi...

    alphahans 评论0 收藏0
  • LeetCode 545. Boundary of Binary Tree 二叉树边界

    摘要:二叉树边界题意高频题,必须熟练掌握。逆时针打印二叉树边界。解题思路根据观察,我们发现当为左边界时,也是左边界当为左边界时,为空,则也可以左边界。先加入左边,加入,然后得到两个子树加入,最后加入右边界。 LeetCode 545. Boundary of Binary Tree 二叉树边界Given a binary tree, return the values of its boun...

    Astrian 评论0 收藏0

发表评论

0条评论

codeGoogle

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<