# Leetcode 67:Add Binary(二进制求和)
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
.
给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1
和 0
。
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(二进制求和)的更多相关文章
- leetCode 67.Add Binary (二进制加法) 解题思路和方法
Given two binary strings, return their sum (also a binary string). For example, a = "11" b ...
- [leetcode]67. Add Binary 二进制加法
Given two binary strings, return their sum (also a binary string). The input strings are both non-em ...
- lintcode:Add Binary 二进制求和
题目: 二进制求和 给定两个二进制字符串,返回他们的和(用二进制表示). 样例 a = 11 b = 1 返回 100 解题: 和求两个链表的和很类似 考虑进位,考虑最后一项的进位 0+0 = 0 不 ...
- LeetCode 67. Add Binary (二进制相加)
Given two binary strings, return their sum (also a binary string). For example,a = "11"b = ...
- LeetCode 67 Add Binary(二进制相加)(*)
翻译 给定两个二进制字符串,返回它们的和(也是二进制字符串). 比如, a = "11" b = "1" 返回 "100". 原文 Give ...
- Add Strings大整数加法十进制求和 & Add Binary二进制求和
[抄题]: 以字符串的形式给出两个非负整数 num1 和 num2,返回 num1和 num2 的和. 比如一个50位+一个100位. 给定 num1 = "123",num2 = ...
- [LeetCode] 67. Add Binary 二进制数相加
Given two binary strings, return their sum (also a binary string). The input strings are both non-em ...
- (String) leetcode 67. Add Binary
Given two binary strings, return their sum (also a binary string). The input strings are both non-em ...
- leetcode 67. Add Binary (高精度加法)
Given two binary strings, return their sum (also a binary string). For example,a = "11"b = ...
随机推荐
- golang io中io.go解读
目录 1. 整体大纲 2. 接口 读 写 关闭 寻址 3. 函数 读 写 复制 4. 结构体 SectionReader LimitedReader teeReader 5. 备注 根据golang ...
- win10 net framework 3.5提示错误代码0x800f081f
重装了win10系统,碰到以下几个问题 1.安装本地iis -启动或关闭windonws功能- 安装net framework 3.5的时候 提示错误代码0x800f081f 2.安装SqlServe ...
- mssql SQL Server 2008 阻止保存要求重新创建表的更改问题的设置方法
解决方法: 工具-〉选项-〉左侧有个 设计器-〉表设计器和数据库设计器 -> 阻止保存要求重新创建表的更改(右侧) 把钩去掉即可.
- React组件安装使用和生命周期函数
React安装在使用react时 需要安装 两个模块 react react-dom 初始化时 需要用到react-dom中的render方法 具体如下: import ReactDOM from & ...
- git合并单个节点
有两个分支 # git branch -a * branchA branchB A分支合并B分支单个节点 # git log commit 6b4f9e1e1a1e1ed3e7ca3a1f15ce1f ...
- 99%的程序都没有考虑的网络异常?使用Fundebug.notify()主动上报
近日看到一篇文章99%的程序都没有考虑的网络异常,开篇提到: 绝大多数程序只考虑了接口正常工作的场景,而用户在使用我们的产品时遇到的各类异常,全都丢在看似 ok 的 try catch 中.如果没有做 ...
- odoo10学习笔记十:Actions
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/11189319.html actions定义了系统对于用户的操作的响应:登录.按钮.选择项目等. 一:窗口ac ...
- PHP数组相关算法
一.排序算法 1. 冒泡排序 2. 选择排序 二.查找算法 1. 遍历 2. 二分查找
- 09、日志轮转+rsync同步
logrotate - rotates, compresses, and mails system logs 日志轮转 rotate 日志切割 轮转 切割 备份 归档 常见 ...
- 201871020225-牟星源《面向对象程序设计(java)》第十一周学习总结
201871020225-牟星源<面向对象程序设计(java)>第十一周学习总结 博文正文开头: 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu ...