LeetCode——67.Add Binary

67.Add Binary

  • 问题描述

       给定两个二进制字符串,返回它们的和(也就是二进制字符串)。

       输入字符串都是非空的,只包含字符1或0。

      例子:

Input: a = "11", b = "1"
Output: "100"
Input: a = "1010", b = "1011"
Output: "10101"
  • 解题方法

     1.利用二进制的加法运算规则,设置一个进位位,逐位相加

    2.使用python强大的数字处理能力,转化围为十进制计算,再转化为二进制字符

  • 代码

java

class Solution {
    string addBinary(string a, string b) {
        string res = "";
        int carry = 0;  //进位位
        int i = a.size()-1, j = b.size()-1;
        while(i>=0 || j>=0 || carry==1)
        {
            int sum = carry;
            if(i>=0)
                sum += (a[i--]-'0');
            if(j>=0)
                sum += (b[j--]-'0');
            res = to_string(sum%2) + res; //to_string()转化为字符
            carry = sum/2;
        }
        return res;
    }
}

python

class Solution(object):
    def addBinary(self, a, b):
        """
        :type a: str
        :type b: str
        :rtype: str
        """
        return bin(int(a, 2) + int(b, 2))[2:]
//int(a,2)将二进制数的字符串转化为十进制或整型,其中,第二个参数可以是8,16,第一个参数可以是数字
//int(3.14) #3
//bin(x)将x转化为二进制形式的字符串:0b1,0b101
  • 总结

      1.对于相关两个字符串的处理的题目很多,如数据结构中两个线性表,链表的相加,使用上面的框架很不错

 while(i>=0 || j>=0 )  {
            ......
            if(i>=0)
               ......
            if(j>=0)
                .....
         }
                

     i,j分别代表长度的变量,通过该框架,可以容易的表现出对长度不同的字符串,当哪个字符串结束后,字符串的处理

    2.python是个强大的编程语言,其特性是里面有很多功能强大的函数可以使用

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值