当前位置:网站首页>leetcode 22.8.1 二进制加法
leetcode 22.8.1 二进制加法
2022-08-04 07:07:00 【硬核哈士奇】
二进制加法
剑指 Offer II 002. 二进制加法 - 力扣(LeetCode)

未优化解法
public static String addBinary(String a,String b){
//先把两个字符串变成byte数组
byte[] bytes01 = a.getBytes();
byte[] bytes02 = b.getBytes();
//定义两个list
List<String> al= new ArrayList<String>();
List<String> bl = new ArrayList<String>();
//把“0” “1” 转存到list里
for (int i = 0; i < bytes01.length; i++) {
if (bytes01[i]==48) al.add("0");
else al.add("1");
}
for (int i = 0; i < bytes02.length; i++) {
if (bytes02[i]==48) bl.add("0");
else bl.add("1");
}
//这里把短的二进制数补齐
int maxSize = 0;
if (bl.size()>=al.size()){
int turns = bl.size() - al.size();
maxSize=bl.size();
for (int i = 0; i < turns; i++) {
al.add(0,"0");
}
}else{
int turns = al.size() - bl.size();
maxSize=al.size();
for (int i = 0; i < turns; i++) {
bl.add(0,"0");
}
}
String answer="";
int flag = 0;
//循环模拟二进制加法
for (int i = 0; i < maxSize; i++) {
int count = Integer.parseInt(al.get(al.size()-1-i))+flag+Integer.parseInt(bl.get(bl.size()-1-i));
if (count==0) {
answer="0"+answer;
flag=0;
}
if (count==1){
answer="1"+answer;
flag=0;
}
if (count==2){
answer="0"+answer;
flag=1;
}
if (count==3){
answer="1"+answer;
flag=1;
}
}
if (flag==1) answer="1"+answer;
return answer;
}
优化后解法
public static String binaryAdd(String a,String b){
//创建一个字符串构造器
StringBuilder sb = new StringBuilder();
//获取字符串长度
int i = a.length(),j=b.length(),c=0;
//进行循环,模拟二进制加法
while(i>0||j>0||c!=0){
int ii = i>0?a.charAt(--i)-'0':0;
int jj = j>0?b.charAt(--j)-'0':0;
c=c+ii+jj;
sb.append(c%2);
c/=2;
}
return sb.reverse().toString();
}
字符串拼接采用了StringBulider,去掉的补位的操作,也没有用额外的数组和链表;时间复杂度为O(N),额外空间复杂度为O(1)
边栏推荐
- 分布式计算实验2 线程池
- 【深度学习实践(二)】上手手写数字识别
- New Questions in Module B of Secondary Vocational Network Security Competition
- unity webgl报 Uncaught SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON
- 一天学会JDBC03:Statement的用法
- Verilog“七宗罪”
- 一天搞定JDBC01:连接数据库并执行sql语句
- Error EPERM operation not permitted, mkdir ‘Dsoftwarenodejsnode_cache_cacach两种解决办法
- 七牛云上传图片和本地上传
- MMDeploy部署实战系列【第二章】:mmdeploy安装及环境搭建
猜你喜欢
随机推荐
ERROR 2003 (HY000) Can‘t connect to MySQL server on ‘localhost3306‘ (10061)解决办法
分布式计算MapReduce | Spark实验
LeetCode 135. 分发糖果
一天学会JDBC04:ResultSet的用法
中职网络安全竞赛C模块MS17-010批量扫描
Activiti 工作流引擎 详解
最强分布式锁工具:Redisson
redis stream 实现消息队列
RT-Thread Studio学习(十二)W25Q128(SPI)的读写
Promise.all 使用方法
npm包发布与迭代
Amazon亚马逊 Vendor Central Label详解
RHCSA第五天
【selenium自动化】第四篇,结合testNg
unity webgl报 Uncaught SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON
小程序如何使用订阅消息(PHP代码+小程序js代码)
电商系统PC商城模块介绍
MMDeploy部署实战系列【第三章】:MMdeploy pytorch模型转换onnx,tensorrt
小猫爪:AWR294x学习笔记02-AWR294x之DPM&IPC
Redis非关系型数据库









