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

可以用栈的方法

相关推荐
数据皮皮侠AI5 小时前
上市公司数字供应链金融指数(2010-2024)
大数据·人工智能·算法
2501_942389555 小时前
Epoch AI旗下FrontierMath的负责人Elliot Glazer
数据结构·决策树·动态规划·散列表
山峰哥5 小时前
数据库工程与SQL调优:从慢查询到秒级响应的实战之路
java·开发语言·数据库·sql·深度优先·启发式算法
乐观的Terry5 小时前
11、发布系统-用户认证与权限体系
java·spring boot·spring·spring cloud·mybatis
前端开发张小七5 小时前
Java 学习笔记 · 第二课:面向对象核心(封装、继承、多态)及接口与异常
java·后端·程序员
wangjialelele5 小时前
Selenium4 + Java Web自动化测试入门指南:从环境搭建到常用操作详解
java·开发语言·前端·测试工具·自动化
孙启超5 小时前
【AI应用开发】LangChain 中 Chain 和 Agent 核心区别?
java·人工智能·langchain·llm·rag·ai应用开发·agent loop
leoZ2315 小时前
实战复盘:用 Claude Code 从零搭一个 GitHub PR 统计工具
java·人工智能·python·深度学习·自然语言处理·github·llama
William Dawson6 小时前
【踩坑实录|Hive1\.2\.1数据服务接口5大疑难问题调试与全方位优化方案】
java·hive·spring boot
Hi李耶6 小时前
【LeetCode】541.反转字符串 II
算法·leetcode·职场和发展