刷题专栏(三):二进制求和

简介: 刷题专栏(三):二进制求和

前言

今天的这道题《二进制求和》,难度还是简单层次,主要考察的是二进制的进位概念,搞清了基础理念,解题自然就不在话下了。

image.png

算法题:二进制求和

二进制求和这道题目,代码初始模板中给到了两个只包含0和1的字符串。

这说明我们要针对字符串拿出每一位数字进行相加才对。

这里我的思路呢,是通过循环来解决的,从两个字符串的最后一位逐一向前求和。

循环体中以两个字符串的长度全部检索完视为结束。

保证每次值如果大于2时,则近一位,并且将多与2的值放入当前位置。

这里有一个特殊情况,那就是最后的位数可能比原有两个字符串最长的还要多一位。

所以要在循环之外,要做一次单独处理。

全程使用StringBuilder来进行拼接,这里考虑到append拼接字符串是向后拼接,所以使用了reverse方法进行倒置。

代码展示

public class Solution {
    public static void main(String[] args) {
        Solution solution = new Solution();
        System.out.println(solution.addBinary("1010", "1011"));
    }
    public String addBinary(String a, String b) {
        StringBuilder r = new StringBuilder();
        int aL = a.length() - 1;
        int bL = b.length() - 1;
        int flag = 0;
        while (aL >= 0 || bL >= 0){
            int aI = 0;
            if(aL >= 0){
                aI = a.charAt(aL) - 48;
            }
            int bI = 0;
            if(bL >= 0){
                bI = b.charAt(bL) - 48;
            }
            int j = aI + bI + flag;
            if(j >= 2){
                r.append(j - 2);
                flag = 1;
            }else{
                r.append(j);
                flag = 0;
            }
            aL--;
            bL--;
        }
        if(flag == 1){
            r.append(flag);
        }
        return r.reverse().toString();
    }
}

执行结果

今天的执行结果还不错,主要是这道题早上就开始写,晚上才有时间坐下来写完他。

image.png

总结

今天这道题,主要还是关于二进制的概念,准确了解二进制的进位机制就可以通过逻辑解决这道题。

目录
相关文章
|
Java 数据库 数据安全/隐私保护
配置文件加密(Jasypt的简单使用)
配置文件加密(Jasypt的简单使用)
|
消息中间件 数据挖掘 Kafka
揭秘数据洪流中的救世主:Confluent与Flink的实时分析奇迹!
【8月更文挑战第9天】在现代数据处理中,实时数据分析至关重要。Confluent Platform与Apache Flink的组合提供了一套高效的数据流处理方案。Confluent Platform基于Apache Kafka构建,负责数据的收集、传输及管理;而Flink则擅长实时处理这些数据流,进行复杂分析。首先需配置Confluent Platform,包括设置Zookeeper、Kafka brokers及相关服务。
232 1
|
前端开发 UED 开发者
react路由懒加载lazy直接使用组件标签引发的问题?
react路由懒加载lazy直接使用组件标签引发的问题?
780 0
|
数据可视化 算法 Java
生信教程:多序列比对
生信教程:多序列比对
|
Java 数据库连接 API
Java 学习路线:基础知识、数据类型、条件语句、函数、循环、异常处理、数据结构、面向对象编程、包、文件和 API
Java 是一种广泛使用的、面向对象的编程语言,始于1995年,以其跨平台性、安全性和可靠性著称,应用于从移动设备到数据中心的各种场景。基础概念包括变量(如局部、实例和静态变量)、数据类型(原始和非原始)、条件语句(if、else、switch等)、函数、循环、异常处理、数据结构(如数组、链表)和面向对象编程(类、接口、继承等)。深入学习还包括包、内存管理、集合框架、序列化、网络套接字、泛型、流、JVM、垃圾回收和线程。构建工具如Gradle、Maven和Ant简化了开发流程,Web框架如Spring和Spring Boot支持Web应用开发。ORM工具如JPA、Hibernate处理对象与数
271 3
|
监控 安全 算法
Baumer工业相机堡盟相机如何实现硬件层面的加密从而实现设备匹配的唯一性
Baumer工业相机堡盟相机如何实现硬件层面的加密从而实现设备匹配的唯一性
194 0
|
Web App开发 JSON JavaScript
4 款好用到爆的 JSON 处理工具,极大提高效率!
JSON是一种流行的轻量级数据交换格式,在网络上已很常见。众所周知,JSON 让开发人员易于使用,又让机器易于解析和生成。 JSON 在线工具之所以能吸引开发者们纷纷使用,还是得益于这些工具不需要安装,浏览器打开直接使用,同时还可以便捷的格式化、验证和解析 JSON。
1264 0
|
存储 编译器 C语言
C++学习:类和对象(上)
C++学习:类和对象(上)
node笔记记录52两道面试题之面试题1之3四次挥手
node笔记记录52两道面试题之面试题1之3四次挥手
95 0
node笔记记录52两道面试题之面试题1之3四次挥手
|
人工智能 运维 物联网
阿里云发布首个钢铁工业互联网平台
5月28日,阿里云联合钢企管家召开了钢铁行业首家工业互联网平台发布会。发布会上,阿里云宣布将整合物联网技术资源,支持钢企管家在钢铁行业的工业互联网平台建设以及在钢铁全产业链上的延伸与发展,助力钢企管家在数字化、移动化、大数据、人工智能、物联网等方面转型升级。
558 17
阿里云发布首个钢铁工业互联网平台