lintcode:Add Binary 二进制求和
题目:
给定两个二进制字符串,返回他们的和(用二进制表示)。
样例
a = 11
b = 1
返回 100
解题:
和求两个链表的和很类似
考虑进位,考虑最后一项的进位
0+0 = 0 不需要进位
0+1 = 1 不需要进位
1+1 =0 进位 1
同时注意
低位进1,高位时1+1的情况,直接加就是3了,这个需要进位1 ,原位的结果也是1的情况
Java程序:
public class Solution {
/**
* @param a a number
* @param b a number
* @return the result
*/
public String addBinary(String a, String b) {
// Write your code here
String result = "";
int aLen = a.length() - 1;
int bLen = b.length() - 1;
int sum = 0;
while(aLen>=0 || bLen>=0){
if(aLen>=0){
sum +=Integer.parseInt(a.substring(aLen,aLen+1));
aLen--;
}
if(bLen>=0){
sum +=Integer.parseInt(b.substring(bLen,bLen+1));
bLen--;
}
if(sum==2){
result = "0" + result;
sum=1;
}else if(sum==0 || sum==1) {
result = sum +"" + result;
sum = 0;
}else if(sum==3){
result = "1" + result;
sum = 1;
}
}
if(sum==1)
result = "1" + result;
return result; }
}
Python程序:
总耗时: 10156 ms
class Solution:
# @param {string} a a number
# @param {string} b a number
# @return {string} the result
def addBinary(self, a, b):
# Write your code here
result =''
aLen = len(a) - 1
bLen = len(b) - 1
sum = 0
while aLen>=0 or bLen>=0:
if aLen>=0:
sum += int(a[aLen])
aLen-=1
if bLen>=0:
sum+= int(b[bLen])
bLen-=1
if sum==3:
result = '' + result
sum=1
elif sum==2:
result = '' + result
sum=1
else:
result = str(sum) + result
sum = 0
if sum==1:
result = '' + result
return result
总耗时: 523 ms
lintcode:Add Binary 二进制求和的更多相关文章
- # Leetcode 67:Add Binary(二进制求和)
Leetcode 67:Add Binary(二进制求和) (python.java) Given two binary strings, return their sum (also a binar ...
- Add Strings大整数加法十进制求和 & Add Binary二进制求和
[抄题]: 以字符串的形式给出两个非负整数 num1 和 num2,返回 num1和 num2 的和. 比如一个50位+一个100位. 给定 num1 = "123",num2 = ...
- 067 Add Binary 二进制求和
给定两个二进制字符串,返回他们的和(用二进制表示).案例:a = "11"b = "1"返回 "100" .详见:https://leetc ...
- [LintCode] Add Binary 二进制数相加
Given two binary strings, return their sum (also a binary string). Have you met this question in a r ...
- leetCode 67.Add Binary (二进制加法) 解题思路和方法
Given two binary strings, return their sum (also a binary string). For example, a = "11" b ...
- 【LeetCode每天一题】Add Binary(二进制加法)
Given two binary strings, return their sum (also a binary string).The input strings are both non-emp ...
- [leetcode]67. Add Binary 二进制加法
Given two binary strings, return their sum (also a binary string). The input strings are both non-em ...
- [Leetcode] add binary 二进制加法
Given two binary strings, return their sum (also a binary string). For example,a ="11"b =& ...
- Lintcode: Add Binary
C++ class Solution { public: /** * @param a a number * @param b a number * @return the result */ str ...
随机推荐
- 20130909QA整理笔记
做项目里遇到的一些问题!! 1.滚动条样式 webkit可以使用css来调节滚动条样式: http://www.cnblogs.com/rubylouvre/archive/2011/03/01/19 ...
- AJAX 跨域 :Access-Control-Allow-Origin
在一个项目上想用NodeJS,在前端的JS(http://localhost/xxx)中ajax访问后端RestAPI(http://localhost:3000/….)时(Chrome)报错: XM ...
- SQL Server 数据库身份认证以及包含数据库
首先分为SQL Server 认证与Windows 身份认证. SQL Server 认证可以运行以下语句来查询 select * from sys.sql_logins 管理员可以直接修改密码,但无 ...
- C#转换日期类型
日期1999-5-31 11:20转换成 /Date(928120800000+0800)/ 其中928120800000实际上是一个1970 年 1 月 1 日 00:00:00至这个DateTim ...
- Java中如何防止内存泄漏的发生
在Java开发中我们常常会遇到内存泄漏的情况发生.那么为什么会发生内存泄漏,以及怎样去防止! 内存泄漏的定义:对象已经没有被应用程序使用,但是垃圾回收器没办法移除它们,因为还在被引用着. 为什么会发生 ...
- mysql_fetch_row()与mysql_fetch_array()的使用介绍
mysql_fetch_array --从结果集中取得一行作为关联数组,或数字数组,或二者兼有 说明array mysql_fetch_array ( resource result [, int r ...
- cocos2dx中的背景图层CCLayerColor和渐变图层CCLayerGradient
1.CCLayerColor是专门用来处理背景颜色的图层,它继承自CCLayer,可以用来设置图层的背景颜色,因为CCLayer默认是透明色的,即无颜色的 2.CCLayerGradient是用来显示 ...
- python学习小结6:模块
模块:在Python中有一个概念叫做模块(module),简单地说,模块就是一个保存了Python代码的文件. 模块能定义函数,类和变量,模块里也能包含可执行的代码. ...
- linux 命令小结
chkconfig --list 查询所有服务运行情况 修改文件夹权限: 在Linux中,权限的所有者分为用户权限,组权限和其他权限,分别是用字母u, g, o 代表权限分为:读 r , 写 w , ...
- Careercup - Facebook面试题 - 5729456584916992
2014-05-02 00:59 题目链接 原题: Given a normal binary tree, write a function to serialize the tree into a ...