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

(python、java)

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

The input strings are both non-empty and contains only characters 1 or 0.

给定两个二进制字符串,返回他们的和(用二进制表示)。

输入为非空字符串且只包含数字 10

Example 1:

Input: a = "11", b = "1"
Output: "100"

Example 2:

Input: a = "1010", b = "1011"
Output: "10101"

解题思路(Java):

​ Java:由于Java语言不像 C/C++ ,Java字符串 String 不可变,比较字符串不能用 “=” ,”=“ 会比较字符串是否为同一个对象,而不是比较字符串内容是否相同。StringBuilder 可操作性较好,可用来记录每一位数 相加后的最终值。

​ 所以这道题输入字符串可利用 chatAt() 方法(用于返回指定索引处的字符。索引范围为从 0 到 length() - 1。)转化为char字符,减去字符 ‘0’ ,得 int 型数值 0 或 1 ,分别与sum累加 。

java:

class Solution {
public String addBinary(String a, String b) {
int i=a.length()-1,j=b.length()-1,tmp=0,sum;
StringBuilder str=new StringBuilder();
while (i>=0||j>=0){
sum=tmp;
if(i>=0) sum += a.charAt(i--)- '0';
if(j>=0) sum += b.charAt(j--)- '0';
tmp=sum/2;//tmp记录是否进一位
str.append(sum%2);//sum%2得余数,即为该位 最终数字
}
if(tmp!=0) str.append(tmp);
return str.reverse().toString();//将 StringBuilder 所得倒置后即为答案,转为 String返回
}
}

解题思路(python3):

​ python3明显灵活很多:

bin()函数 -- 返回一个整数 int 或者长整数 long int 的二进制表示。

  • 返回的数值是以0b开头,表明返回的数值是二进制

int() 函数用于将一个字符串或数字转换为整型。

class int(x, base=10)

  • x -- 字符串或数字。
  • base -- 进制数,默认十进制。(指定base为非十进制时,x 需以字符串形式传入)

python3:

class Solution:
def addBinary(self, a: str, b: str) -> str:
"""
:type a: str
:type b: str
:return: str
"""
return bin(int(a,2)+int(b,2))[2:] #[2:]从第三个元素开始截取,忽略 0b

# Leetcode 67:Add Binary(二进制求和)的更多相关文章

  1. leetCode 67.Add Binary (二进制加法) 解题思路和方法

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

  2. [leetcode]67. Add Binary 二进制加法

    Given two binary strings, return their sum (also a binary string). The input strings are both non-em ...

  3. lintcode:Add Binary 二进制求和

    题目: 二进制求和 给定两个二进制字符串,返回他们的和(用二进制表示). 样例 a = 11 b = 1 返回 100 解题: 和求两个链表的和很类似 考虑进位,考虑最后一项的进位 0+0 = 0 不 ...

  4. LeetCode 67. Add Binary (二进制相加)

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

  5. LeetCode 67 Add Binary(二进制相加)(*)

    翻译 给定两个二进制字符串,返回它们的和(也是二进制字符串). 比如, a = "11" b = "1" 返回 "100". 原文 Give ...

  6. Add Strings大整数加法十进制求和 & Add Binary二进制求和

    [抄题]: 以字符串的形式给出两个非负整数 num1 和 num2,返回 num1和 num2 的和. 比如一个50位+一个100位. 给定 num1 = "123",num2 = ...

  7. [LeetCode] 67. Add Binary 二进制数相加

    Given two binary strings, return their sum (also a binary string). The input strings are both non-em ...

  8. (String) leetcode 67. Add Binary

    Given two binary strings, return their sum (also a binary string). The input strings are both non-em ...

  9. leetcode 67. Add Binary (高精度加法)

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

随机推荐

  1. C# NPOI Export DataTable C# NPOI导出DataTable 单元格自适应大小

    1.Install-Package NPOI -v 2.4.0 2. using NPOI.XSSF; using NPOI.XSSF.UserModel; using NPOI.SS.UserMod ...

  2. 使用WebApi和Asp.Net Core Identity 认证 Blazor WebAssembly(Blazor客户端应用)

    原文:https://chrissainty.com/securing-your-blazor-apps-authentication-with-clientside-blazor-using-web ...

  3. Java性能 -- CAS乐观锁

    synchronized / Lock / CAS synchronized和Lock实现的同步锁机制,都属于悲观锁,而CAS属于乐观锁 悲观锁在高并发的场景下,激烈的锁竞争会造成线程阻塞,而大量阻塞 ...

  4. Java开发常用知识点总结

    docker exec -it imageId redis-cli docker container ls -a docker rm containerId 复制目录&文件 cp -r /ro ...

  5. SAP 预制发票报错 -Material 20000000 D119223073 in valuation area VNSM has inconsistant ML data- 之对策

    SAP 预制发票报错 -Material 20000000 D119223073 in valuation area VNSM has inconsistant ML data- 之对策 业务人员报对 ...

  6. redo log重做日志缓冲

    ---------------------------------- 2015-02-10---------------------------------- innodb redo log (重做日 ...

  7. Java前后端的跨域问题

    1 前端127.0.0.1:8888 2 后端127.0.0.1:8080 前端和后端因为来自不同的网域,所以在http的安全协议策略下,不信任 3 解决方案,在springmvc的控制层加入@Cro ...

  8. Jenkins + Pipeline + Git + Maven (十)

    一.准备环境介绍 192.168.5.71 # gitlab 仓库IP 192.168.5.72 # 开发环境,用于提交代码等 192.168.5.73 # tomcat 部署solo服务站点 192 ...

  9. 1.编译chromium

    1. 前言 做了两年Chromium相关的开发,最近项目遇到瓶颈,自己有点迷茫.回顾之前做的工作,发现对chromium的认识还停留在非常表面的水平.因此,一直想对之前做的做个总结,只有总结反思才能提 ...

  10. 201871010101-陈来弟《面向对象程序设计(java)》第十五周学习总结

                                                                                                         ...