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. golang io中io.go解读

    目录 1. 整体大纲 2. 接口 读 写 关闭 寻址 3. 函数 读 写 复制 4. 结构体 SectionReader LimitedReader teeReader 5. 备注 根据golang ...

  2. win10 net framework 3.5提示错误代码0x800f081f

    重装了win10系统,碰到以下几个问题 1.安装本地iis -启动或关闭windonws功能- 安装net framework 3.5的时候 提示错误代码0x800f081f 2.安装SqlServe ...

  3. mssql SQL Server 2008 阻止保存要求重新创建表的更改问题的设置方法

    解决方法: 工具-〉选项-〉左侧有个 设计器-〉表设计器和数据库设计器 -> 阻止保存要求重新创建表的更改(右侧) 把钩去掉即可.

  4. React组件安装使用和生命周期函数

    React安装在使用react时 需要安装 两个模块 react react-dom 初始化时 需要用到react-dom中的render方法 具体如下: import ReactDOM from & ...

  5. git合并单个节点

    有两个分支 # git branch -a * branchA branchB A分支合并B分支单个节点 # git log commit 6b4f9e1e1a1e1ed3e7ca3a1f15ce1f ...

  6. 99%的程序都没有考虑的网络异常?使用Fundebug.notify()主动上报

    近日看到一篇文章99%的程序都没有考虑的网络异常,开篇提到: 绝大多数程序只考虑了接口正常工作的场景,而用户在使用我们的产品时遇到的各类异常,全都丢在看似 ok 的 try catch 中.如果没有做 ...

  7. odoo10学习笔记十:Actions

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/11189319.html actions定义了系统对于用户的操作的响应:登录.按钮.选择项目等. 一:窗口ac ...

  8. PHP数组相关算法

    一.排序算法 1. 冒泡排序 2. 选择排序 二.查找算法 1. 遍历 2. 二分查找

  9. 09、日志轮转+rsync同步

    logrotate   -  rotates,  compresses,  and    mails system logs 日志轮转 rotate 日志切割 轮转   切割   备份   归档 常见 ...

  10. 201871020225-牟星源《面向对象程序设计(java)》第十一周学习总结

    201871020225-牟星源<面向对象程序设计(java)>第十一周学习总结 博文正文开头: 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu ...