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

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

前言

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

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. 二进制求和
|
7月前
【一刷《剑指Offer》】面试题 10:二进制中 1 的个数
【一刷《剑指Offer》】面试题 10:二进制中 1 的个数
|
7月前
【一刷《剑指Offer》】面试题 12:打印 1 到最大的 n 位数
【一刷《剑指Offer》】面试题 12:打印 1 到最大的 n 位数
|
7月前
|
算法 Java
刷题专栏(二十五):有效的完全平方数
刷题专栏(二十五):有效的完全平方数
184 2
|
7月前
|
算法
刷题专栏(十五):各位相加
刷题专栏(十五):各位相加
55 0
|
7月前
|
算法
刷题专栏(十六):丑数
刷题专栏(十六):丑数
62 0
|
7月前
|
算法 Java
刷题专栏(二十三):4的幂
刷题专栏(二十三):4的幂
101 0
|
7月前
|
算法
刷题专栏(二十二):3 的幂
刷题专栏(二十二):3 的幂
125 0
|
7月前
剑指Offer LeetCode 面试题17. 打印从1到最大的n位数
剑指Offer LeetCode 面试题17. 打印从1到最大的n位数
37 0
|
机器学习/深度学习 Cloud Native
【刷题日记】67. 二进制求和
本次刷题日记的第 15 篇,力扣题为:67. 二进制求和 ,简单