67.Add Binary(String-Easy)

Given two binary strings, return their sum (also a binary string).

For example,

a = “11”

b = “1”

Return “100”

题目:两个代表二进制数字的字符串相加

思路:从低位开始相加,逢二进一:

- 字符串的高位是数字的低位。例如:string a = “100”,a[2]则为”0”; - 用一个变量记录相加的进位情况。 > Language:cpp

class Solution {
public:
    string addBinary(string a, string b) {
        string s = "";
        //i字符串a的索引值,j字符串b的索引值
        int c = 0, i = a.size() - 1, j = b.size() - 1;
        //字符串a和b没有遍历完,或者存在进位,继续计算
        while(i >= 0 || j >= 0 || c == 1)
        {
            //三目运算符:低位相加
            c += i >= 0 ? a[i--] - '0' : 0;
            c += j >= 0 ? b[j--] - '0' : 0;
            //结果
            s = char(c % 2 + '0') + s;
            //进位计算
            c /= 2;
        }
        //返回结果
        return s;
    }
};

Language:Python

class Solution(object):
    def addBinary(self, a, b):
        """
        :type a: str
        :type b: str
        :rtype: str
        """
        if len(a)==0: return b
        if len(b)==0: return a
        if a[-1] == '1' and b[-1] == '1':
            return self.addBinary(self.addBinary(a[0:-1],b[0:-1]),'1') +'0'
        if a[-1] == '0' and b[-1] == '0':
            return self.addBinary(a[0:-1],b[0:-1])+'0'
        else:
            return self.addBinary(a[0:-1],b[0:-1])+'1'

LeetCode题目汇总: https://github.com/Jack-Cherish/LeetCode

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏韦弦的偶尔分享

Swift 删除链表中的节点 - LeetCode

请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。

17830
来自专栏hbbliyong

Python正则进阶

  返回一个列表,如果正则表达式中没有分组,则列表中包含的是所有匹配的内容,如果正则表达式中有分组,则列表中的每个元素是一个元组,元组中包含子分组中匹配到的内容...

14630
来自专栏mathor

数制

10250
来自专栏老马说编程

(28) 剖析包装类 (下) / 计算机程序的思维逻辑

本节探讨Character类,它的基本用法我们在包装类第一节已经介绍了,本节不再赘述。Character类除了封装了一个char外,还有什么可介绍的呢?它有很多...

20770
来自专栏Android群英传

Swift vs. Kotlin 漫谈系列之类与继承

21340
来自专栏转载gongluck的CSDN博客

python笔记:#005#算数运算符

算数运算符 计算机,顾名思义就是负责进行 数学计算 并且 存储计算结果 的电子设备 目标 算术运算符的基本使用 01. 算数运算符 算数运算符是 运算符的一种 ...

39170
来自专栏和蔼的张星的图像处理专栏

655. 大整数加法

以字符串的形式给出两个非负整数 num1 和 num2,返回 num1 和 num2 的和。 注意事项: num1 和 num2 的长度都小于5100。 ...

10910
来自专栏Android干货园

Kotlin中级(8)- - - Kotlin类之接口、枚举.md

8020
来自专栏技术沉淀

Python: collections模块实例透析Collections模块

19580
来自专栏书山有路勤为径

求两个链表的交点

已知链表A的头节点指针headA,链表B的头节点指针headB,两个链表相交,求两链表交点对应的节点。 [](LeetCode 160)

7320

扫码关注云+社区

领取腾讯云代金券