leetcode67 二进制加法

本文介绍了一个解决LeetCode第67题的方法:如何将两个二进制数相加。通过补0操作使两数长度相同,然后逐位进行二进制加法运算,同时处理进位情况,最终返回结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//leetcode67 二进制数相加
 public static void main(String argv[]){
     String a="1111";
     String b="1111";  
     System.out.println(addBinary(a,b));
     
 }
  public static String addBinary(String a, String b) {
       
         String c="";
        
         int alen=a.length();
         int blen=b.length();
         int flag=0;
         String pp="";
       //位数不同,给字符串补0
         if(alen>blen){//给b补0
          int ablen=alen-blen;
          for(int p=0;p<ablen;p++){
           pp=pp+"0";
          }
          b=pp+b;
          blen=alen;
         }else{
          int ablen=blen-alen;
          for(int p=0;p<ablen;p++){
           pp=pp+"0";
          }
          a=pp+a;
          alen=blen;
         }
         String[] aa=a.split("");
         String[] bb=b.split("");
        
         int i=alen-1;
         while(alen !=0 && blen!=0){
          if((aa[i].equals("1") && bb[i].equals("0")) || (aa[i].equals("0") && bb[i].equals("1"))){
           if(flag==0){
            c="1"+c; 
           }else{
            c="0"+c;//flag 不变            
           }
          }else if(aa[i].equals("1") && bb[i].equals("1")){
           if(flag==0){
            c="0"+c;
            flag++;
           }else{
            c="1"+c;//flag 不变            
           }
          }else {//0+0的情况
           if(flag==0){
            c="0"+c;
           }else{
            c="1"+c;
            flag--;
           }
          }
          i--;
          alen--;
          blen--;
         }
        
         while(flag !=0){
          flag--;
          c="1"+c;
         }
         return c;
        
   }
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值