67. Add Binary

本文介绍了一种解决二进制字符串相加问题的方法。通过翻转字符串并逐位进行加法运算,同时处理进位情况,最终得到正确的二进制结果。

题目描述:

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

For example,
a = "11"
b = "1"
Return "100".

我的思路:

        给定连个二进制数,用字符串表示,计算他们的加和,然后也以字符串的形式返回。

        先把两个字符串翻转,从低位加到高位,同时用一个p保存进位,如果最后有进位,在结果前面加1。

我的代码:

class Solution:
    def addBinary(self, a, b):
        a, b = a[::-1], b[::-1]
        m = max(len(a), len(b))
        p = 0                                             # p用来保存进位
        rel = []
        
        for i in range(m):                                # a_num,b_num分别表示a,b中的数,如果超出了长度就是0
            a_num = int(a[i]) if i < len(a) else 0
            b_num = int(b[i]) if i < len(b) else 0
            p, res = divmod(a_num + b_num + p, 2)
            rel.append(res)
            
        if p == 1:                                        # 如果最后结果有进位1的话,直接在高位添加1
            rel.append(1)
            
        return ''.join([str(x) for x in rel[::-1]])

Discuss:

class Solution:
    def addBinary(self, a, b):
        return bin(int(a,2)+int(b,2))[2:]

学到:

  1. bin() 返回一个整数 int 或者长整数 long int 的二进制表示。
  2. int() 函数用于将一个字符串或数字转换为整型。默认是十进制,可以修改参数。
在 Git 中,可以通过配置 `.gitattributes` 文件来指定特定文件类型为二进制文件。此方法确保 Git 在处理这些文件时将其视为二进制数据,避免进行不必要的文本转换或差异计算。 ### 配置步骤 1. **创建或编辑 `.gitattributes` 文件** 在项目的根目录下创建一个名为 `.gitattributes` 的文件(如果尚未存在),并添加以下内容: ```plaintext *.pdf binary *.png binary ``` 上述规则告诉 Git 将所有 `.pdf` 和 `.png` 文件视为二进制文件,防止 Git 对它们进行行结束符转换(如 LF/CRLF)或生成文本差异[^1]。 2. **将 `.gitattributes` 文件提交到仓库** 确保该文件被提交到版本控制中,以便其他开发者也能够继承这一配置。 ```bash git add .gitattributes git commit -m "Configure .pdf and .png files as binary" ``` 3. **可选:全局配置属性文件** 如果希望在所有本地 Git 仓库中使用相同的 `.gitattributes` 行为,可以设置 `core.attributesFile` 指向一个全局的 `.gitattributes` 文件。 ```bash git config --global core.attributesFile ~/.gitattributes.global ``` 然后,在用户主目录下创建 `~/.gitattributes.global` 文件,并添加相同的规则内容: ```plaintext *.pdf binary *.png binary ``` 这样,所有未覆盖此设置的新仓库都会应用这些全局属性。 --- ### 示例 `.gitattributes` 内容扩展 除了基本的二进制标记外,还可以定义更复杂的规则,例如: ```plaintext # Treat all PDFs and PNGs as binary *.pdf binary *.png binary # Disable diff for specific binary types *.jpg -diff *.gif -diff ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值