Leetcode 颠倒二进制位/二进制求和

java 复制代码
class Solution {
    public int reverseBits(int n) {
        int rev = 0;
        for(int i = 0;i< 32 && n!= 0;i++){
            rev |= (n&1)<< (31-i);
            n >>>= 1;
        }
        return rev;
    }
}

n & 1相当于取最低位 ,<< 往左移动 (31-i)的位置,对称高位移到对称低位

n >>>= 1 向右移动1位 ,(相当于后面可以取后面的低位)

官方的题解里面是分治的方法,采用掩码的方式,采用2,4,8位等等来进行换位,用的是分治法来反转二进制位。比之前的循环方法更快

67. 二进制求和 - 力扣(LeetCode)

java 复制代码
class Solution {
    public String addBinary(String a, String b) {
        StringBuilder result = new StringBuilder();

        int i = a.length() -1;
        int j = b.length() - 1;

        int carry = 0;

        while(i >= 0 || j >= 0 || carry >0){
            int digitA = (i >= 0) ? a.charAt(i) - '0' :0;
            int digitB = (j >= 0) ? b.charAt(j) -'0' :0;

            int sum = digitA + digitB +carry;
            result.append(sum %2);

            carry = sum/2;

            i--;
            j--;
        }
        return result.reverse().toString();
    }
}

可以用栈的方法

相关推荐
用户1085932993411 小时前
Java集合框架完全指南
java
俩娃妈教编程2 小时前
2023 年 09 月 二级真题(1)--小杨的 X 字矩阵
数据结构·c++·算法·双层循环
Never_Satisfied2 小时前
在c#中,获取文件的大小
java·开发语言·c#
铸人2 小时前
再论自然数全加和 - 欧拉伽马常数4
算法
蜂蜜黄油呀土豆2 小时前
浅拷贝与深拷贝:实现与应用解析
java·浅拷贝·深拷贝·对象复制
014-code2 小时前
Spring Boot 集成 Neo4j 图数据库实战教程
java·数据库·neo4j
时艰.2 小时前
分布式 ID 服务实战
java·分布式
七夜zippoe2 小时前
分布式系统弹性设计实战:Hystrix与Sentinel熔断降级深度解析
java·hystrix·sentinel·aws·分布式系统
prince_zxill2 小时前
探索Nautilus Trader:高性能算法交易平台与事件驱动回测引擎的全面指南
算法