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

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

前言

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

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

总结

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

目录
相关文章
【LeetCode-每日一题】-67. 二进制求和
【LeetCode-每日一题】-67. 二进制求和
|
20天前
|
存储 安全 C语言
【C语言刷题每日一题】——求最大公约数(带数学计算过程详解)
【C语言刷题每日一题】——求最大公约数(带数学计算过程详解)
|
20天前
|
存储 编译器 C语言
【C语言刷题每日一题#牛客网BC107】矩阵转置
【C语言刷题每日一题#牛客网BC107】矩阵转置
|
2月前
|
算法
刷题专栏(十五):各位相加
刷题专栏(十五):各位相加
37 0
|
2月前
|
算法 Java
刷题专栏(二十三):4的幂
刷题专栏(二十三):4的幂
86 0
|
2月前
|
算法
刷题专栏(二十二):3 的幂
刷题专栏(二十二):3 的幂
107 0
|
12月前
|
机器学习/深度学习 Cloud Native
【刷题日记】67. 二进制求和
本次刷题日记的第 15 篇,力扣题为:67. 二进制求和 ,简单
|
12月前
|
Python Cloud Native
【刷题日记】415. 字符串相加
本次刷题日记的第 48 篇,力扣题为:415. 字符串相加 ,简单
|
存储 算法 C语言
【C语言蓝桥杯每日一题】—— 递增序列
递增序列🙌 对于一个字母矩阵,我们称矩阵中的一个递增序列是指在矩阵中找到两个字母,它们在同一行,同一列,或者在同一 45 45 度的斜线上,这两个字母从左向右看、或者从上向下看是递增的。
138 0
|
存储 机器学习/深度学习 算法
算法刷题第十四天:位运算--2
代码实现中,每枚举一位就将 n 右移一位,这样当前 n 的最低位就是我们要枚举的比特位。当 n 为 0 时即可结束循环。
80 0
算法刷题第十四天:位运算--2