博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Leetcode] Add Binary 二进制相加
阅读量:6759 次
发布时间:2019-06-26

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

Add Binary

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

For example, a = "11" b = "1" Return "100".

模拟加法

复杂度

时间 O(N) 空间 O(1)

思路

模拟加法的运算法则,从最低位加到最高位。记得使用StringBuilder来减少字符串操作的开销。

代码

public class Solution {    public String addBinary(String a, String b) {        int i = a.length() - 1, j = b.length() - 1, carry = 0;        StringBuilder sb = new StringBuilder();        while(i >=0 || j >=0){            int m = i >= 0 ? a.charAt(i) - '0' : 0;            int n = j >= 0 ? b.charAt(j) - '0' : 0;            int sum = m + n + carry;            carry = sum / 2;            sb.insert(0, String.valueOf(sum % 2));            i--;            j--;        }        if(carry != 0) sb.insert(0, '1');        return sb.toString();    }}

后续 Follow Up

如果不是二进制相加,而是十六进制相加呢?只要把算法中的除2和余2换成16,并添加相应的十六进制字母就行了。

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

你可能感兴趣的文章
JAVA中的参数按值传递与按引用传递
查看>>
与Recommender System相关的会议及期刊
查看>>
如何理解ip路由和操作linux的路由表
查看>>
WCF的几种寄宿方式 ( 转)
查看>>
数字数据fzu 2120 数字排列
查看>>
ORACLE 数据库 SQL 转换 只取 年和月
查看>>
区间查询[2009国家集训队]小Z的袜子(hose)
查看>>
Android之使用微信开放api (三)---注册与反注册应用到微信
查看>>
我是怎样看待微博的
查看>>
论《我是如何安慰女友的》
查看>>
nullnull用宏定义swap(x,y)
查看>>
【Javascript】类,封装性 -- 1
查看>>
Mono for Android安装配置破解
查看>>
uploadfy 常见问题收集
查看>>
WPF----数据绑定
查看>>
子类化GetOpenFileName/GetSaveFileName, 以及钩子函数OFNHookProc的使用的简要说明
查看>>
C语言中判断int,long型等变量是否赋值的方法
查看>>
leetcode -- Longest Valid Parentheses
查看>>
详解JAVA输出Hello World
查看>>
概率问题随笔
查看>>