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

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

前言

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

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. 二进制求和
|
4月前
|
人工智能 算法 Java
截断数组(蓝桥杯每日一题)
截断数组(蓝桥杯每日一题)
22 0
|
5月前
|
算法
刷题专栏(十五):各位相加
刷题专栏(十五):各位相加
33 0
|
6月前
|
Python
牛客刷题之数学基础-约数
牛客刷题之数学基础-约数
25 0
|
10月前
|
机器学习/深度学习 Cloud Native
【刷题日记】67. 二进制求和
本次刷题日记的第 15 篇,力扣题为:67. 二进制求和 ,简单
|
10月前
|
前端开发 C语言 Cloud Native
【刷题日记】2. 两数相加
本次刷题日记的第 6 篇,力扣题为:2. 两数相加 ,中等
|
10月前
|
Python Cloud Native
【刷题日记】415. 字符串相加
本次刷题日记的第 48 篇,力扣题为:415. 字符串相加 ,简单
|
存储 机器学习/深度学习 算法
算法刷题第十四天:位运算--2
代码实现中,每枚举一位就将 n 右移一位,这样当前 n 的最低位就是我们要枚举的比特位。当 n 为 0 时即可结束循环。
70 0
算法刷题第十四天:位运算--2
|
算法 Java
算法学习入门Day2_Leetcode_1 两数之和
算法学习入门Day2_Leetcode_1 两数之和
算法学习入门Day2_Leetcode_1 两数之和