当前位置:网站首页>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)
边栏推荐
- int *p = &a、p = &a、*p = a的正确理解
- a标签下载图片,不要预览
- 最强分布式锁工具:Redisson
- 全国职业院校技能大赛网络安全竞赛之应急响应
- 串口监听 - 软件方案
- 【剑指Offer】二分法例题
- 小猫爪:AWR294x学习笔记02-AWR294x之DPM&IPC
- 解决循环依赖import cycle not allowed的最佳解决办法
- 开发小技巧 navicate如何点击单元格显示全部的文本内容或通过图像查看内容
- [Paper Notes] - Low Illumination Image Enhancement - Supervised - RetinexNet - 2018-BMVC
猜你喜欢
高等代数_证明_两个矩阵乘积为0,则两个矩阵的秩之和小于等于n
Activiti 工作流引擎 详解
Sql优化总结!详细!(2021最新面试必问)
简析强制缓存和协商缓存
字节跳动岗位薪酬体系曝光,看完我真的酸了...
Produce definition 产品与行业分析 勤于思考 善于总结 强于表达
1161. Maximum Level Sum of a Binary Tree
CSRF和SSRF漏洞
使用腾讯云发送短信 ---- 手把手教你搞定所有步骤
Lightweight Backbone VGNetG Achieves "No Choice, All" Lightweight Backbone Network
随机推荐
TypeScript基本类型、类、封装、继承、泛型、接口、命名空间
有趣的USB接口和颜色分类
CAN协议详解-01
分布式计算实验3 基于PRC的书籍信息管理系统
海康VisionMaster与西门子Smart 200进行S7通信
七牛云上传图片和本地上传
LeetCode 135. 分发糖果
Verilog“七宗罪”
Sql优化总结!详细!(2021最新面试必问)
【剑指Offer】二分法例题
小猫爪:AWR294x学习笔记02-AWR294x之DPM&IPC
Distributed Computing Experiment 4 Random Signal Analysis System
Detailed ResNet: What problem is ResNet solving?
串口监听 - 软件方案
FCN - the originator of semantic segmentation (based on tf-Kersa reproduction code)
一天搞定JDBC02:开启事务
ConstraintSet of animation of ContrstrainLayout
Distributed Computing Experiment 2 Thread Pool
mysql基础(4)
使用腾讯云发送短信 ---- 手把手教你搞定所有步骤