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();
    }
}

可以用栈的方法

相关推荐
Wang's Blog4 小时前
Java 项目实战: 外卖平台优化-Nginx配置文件结构与块层级
java·开发语言·nginx
hetao17338375 小时前
2026-10-03~04 hetao1733837 的刷题记录
c++·算法
\光辉岁月/6 小时前
5.java-数组
java·开发语言
谢亮_vipxieliang6 小时前
Spring 事务失效的常见场景
java·开发语言·数据库·spring boot
Zootopia6266 小时前
飞行力学知识梳理1|飞行性能与稳定性
人工智能·python·算法·机器学习·无人机·学习方法·信息与通信
longlongzihan6 小时前
从LeetCode 70. 爬楼梯看动态规划:如何精准推导状态转移方程?
c++·算法·leetcode·动态规划
郑州光合科技余经理6 小时前
海外版外卖加盟:总站与分站配送规则怎么分开管
java·开发语言·前端·后端·uni-app·php·ai编程
2601_962071576 小时前
类变量和全局变量的生命周期有什么区别?
java·开发语言·jvm
code2cat6 小时前
Java进阶篇之AtomicReference:一次替换引用,读到一份完整状态
java·并发编程·不可变对象·atomicreference
专业程序开发源6 小时前
springboot简历管理系统81389-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·php·课程设计