当前位置: 首页 > news >正文

力扣67:二进制求和

Problem: 67. 二进制求和

1. 弄清楚二进制之间如何求和:

1. 先保证长度一致,短的一方进行补零:向前补0(不影响数字),那么如何实现这一步呢?自己想到的是数组,先找到长度Max一方,然后让短的一方的长度变为Max,但是如何实现向前补零呢?没有实现出来。

2.  长度一致后,从后往前计算,满2进1,当前位变为0,依次类推。

至于补零操作:根本不需要使用数组,强大的字符串就可以实现!!

拼接法:在字符串的前面添加'0'即可

如何实现进位操作呢? 当前位的和是由三部分构成:两个字符串各自的数和进位,进行模余,如果等于2,则为0(将当前为添加到字符串中),进位变成1,如果为1(当前位相加不满2),不进位, 进位操作:除法,满2,进1 因为之前计算的步骤都是下标为0,开始逐个添加,所以最后一个进行翻转,变成字符串

    Code

    class Solution {
    
        public String addBinary(String a, String b) {
    
            int len1=a.length(),len2=b.length();
    
           
    
            // if(len1!=len2){
    
            //     int len=Math.max(len1,len2); 
    
            //     int[] num=new int[len];
    
            //     if(len1>len2){
    
            //         for(int i=len2-1;i>=0;i--){
    
            //             num[i]=0;
    
            //         }
    
            //     }   
    
            // }
    
            //补齐长度
    
            while(len1>len2){
    
                b='0'+b;
    
                len2++;
    
            }
    
            while(len1<len2){
    
                a='0'+a;
    
                len1++;
    
            }
    
            int sum=0;
    
            int add=0;
    
            StringBuilder result=new StringBuilder();
    
            //进行计算
    
            for(int i=len1-1;i>=0;i--){
    
                sum=add;
    
                if(a.charAt(i)=='1'){
    
                    sum+=1;
    
                }
    
                 if(b.charAt(i)=='1'){
    
                    sum+=1;
    
                }
    
                // sum += a.charAt(i) == '1' ? 1 : 0;
    
                // sum += b.charAt(i) == '1' ? 1 : 0;
    
                //处理进位
    
                //sum=1:不进位,=2:进位,当前值变为0;
    
                result.append(sum%2);
    
                // if(sum>=2){
    
                //     add=1;
    
                // }else{
    
                //     add=0;
    
                // }
    
                add=sum/2;
    
            }
    
            if(add==1){
    
                    result.append(add);
    
                }
    
            return result.reverse().toString();
    
        }
    
    }

    相关文章:

  • 初识C++:Hello, World!
  • HarmonyOS NEXT 鸿蒙中关系型数据库@ohos.data.relationalStore API 9+
  • PPT制作,分享下2025年国内外做PPT的AI工具,一健生成PPT
  • 【RabbitMQ】
  • 高精度加减乘除 + R 格式
  • windows免密ssh登录linux
  • 核函数(机器学习深度学习)
  • (UI自动化测试web端)第三篇:元素的常用操作方法_鼠标操作
  • CF每日5题Day2(1400)
  • C语言代码如何操作硬件?
  • 量子计算的黎明:从理论到现实的突破之旅
  • 《Python实战进阶》No37: 强化学习入门:Q-Learning 与 DQN
  • 2025年人工智能产业TOP10有哪些省份?人工智能产业发展前景如何?
  • HarmonyOS NEXT 鸿蒙中手写和使用第三方仓库封装Logger打印工具
  • 04 单目标定实战示例
  • MySQL 用户权限与安全管理
  • 5G网络中CPE和ACS
  • 优雅的开始一个Python项目
  • Windows 我的世界 Minecraft 服务器搭建,Fabric 模组搭建教程(内网穿透)
  • 2025年渗透测试面试题总结-某快手-安全工程师(题目+回答)
  • 温岭做网站公司/济南市最新消息
  • 广州中英文网站建设/seo在线培训机构
  • 东莞网站制作/百度推广需要多少钱
  • jsp做的网站答辩问题/网站建设模板
  • 新闻静态网站咋做/怎么自己做网站推广
  • 网站服务器架设/识别关键词软件