当前位置:网站首页>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)
边栏推荐
猜你喜欢
随机推荐
LeetCode(剑指 Offer)- 18. 删除链表的节点
海康VisionMaster与西门子Smart 200进行S7通信
Distributed Computing Experiment 1 Load Balancing
ExoPlayer添加Ffmpeg扩展实现软解功能
The national vocational skills contest competition of network security emergency response
unity3d-Animation&&Animator接口(基本使用)
MAML principle explanation and code implementation
2022的七夕,奉上7个精美的表白代码,同时教大家改源码快速自用
Praat:语音标注工具【保存为TextGrid文件】
高等代数_证明_对称矩阵属于不同特征值的特征向量正交
Sql优化总结!详细!(2021最新面试必问)
经典新诗九首
详解CAN总线:常用CAN连接器的使用方法
RHCSA第五天
RT-Thread Studio学习(十一)IIC
中断和异常的处理与抢占式多任务
Transform 相对位置变换,坐标系转换
七牛云上传图片和本地上传
SystemVerilog-条件(三元)运算符
MySQL group_concat()详解