博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Add Binary Leetcode java
阅读量:6838 次
发布时间:2019-06-26

本文共 1008 字,大约阅读时间需要 3 分钟。

题目

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

For example,

a = "11"
b = "1"
Return "100".

 

题解

二进制加法都是从最低位(从右加到左)。所以对两个字符串要从最后一位开始加,如果遇见长度不一的情况,就把短的字符串高位补0.

每轮计算要加上进位,最后跳出循环后要坚持进位是否为1,以便更新结果。

 

代码如下(from discussion):

 

 1 
public String addBinary(String a, String b) {
 2     
int m = a.length();
 3     
int n = b.length();
 4     
int carry = 0;
 5     String res = "";
 6     
//
 the final length of the result depends on the bigger length between a and b, 
 7 
    
//
 (also the value of carry, if carry = 1, add "1" at the head of result, otherwise)
 8 
    
int maxLen = Math.max(m, n);
 9     
for (
int i = 0; i < maxLen; i++) {
10         
//
 start from last char of a and b
11 
        
//
 notice that left side is int and right side is char
12 
        
//
 so we need to  minus the decimal value of '0'
13 
        
int p=0,q=0;
14         
if(i<m)
15             p = a.charAt(m-1-i) - '0';
16         
else
17             p = 0;
18         
19         
if(i<n)
20             q = b.charAt(n-1-i)-'0';
21         
else
22             q = 0;
23             
24         
int tmp = p + q + carry;
25         carry = tmp / 2;
26         res += tmp % 2;
27     }
28     
return (carry == 0) ? res : "1" + res;
29     }

转载地址:http://dzqkl.baihongyu.com/

你可能感兴趣的文章
windows7+Apache2.2+PHP5.4.29 环境搭建
查看>>
常用快捷键
查看>>
Spring AOP动态代理-切面
查看>>
Spring整合JMS(四)——事务管理
查看>>
C#中获取当前应用程序的路径及环境变量
查看>>
ThinkPHP5.0中Redis的使用和封装
查看>>
使用dwz框架搭建网站后台
查看>>
为什么很多人喜欢把软件装在D盘,而不是系统盘C
查看>>
把json对象串转换成map对象
查看>>
十字消源码分享(基于libgdx开发)
查看>>
看到OSC有一期是:“OSChina 第 37 期高手问答 —— 消息队列服务”
查看>>
Quasar Akka Vertx Norbert 比较
查看>>
资源盗链困扰站长 安全狗内置盗链保护功能
查看>>
服务器安全股v4.0正式版发布 防火墙效能更强
查看>>
百度地图-解决新版百度定位失败问题
查看>>
Android Jetpack架构组件之 Room(使用、源码篇)
查看>>
Android WebView 支持H5图片上传<input type="file">
查看>>
PHP-FPM,Nginx,FastCGI 三者之间的关系
查看>>
这才是我想要的云盘工具
查看>>
iOS6.0下获取通讯录用户列表
查看>>