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

可以用栈的方法

相关推荐
房开民2 小时前
c++总结
java·开发语言·c++
好大哥呀2 小时前
C++ 多态
java·jvm·c++
毕设源码-赖学姐2 小时前
【开题答辩全过程】以 基于Java的医院器材管理系统的设计与实现为例,包含答辩的问题和答案
java·开发语言
float_com2 小时前
【java常用API】----- Arrays
java·开发语言
阿豪学编程3 小时前
LeetCode724.:寻找数组的中心下标
算法·leetcode
LuckyTHP3 小时前
迁移shibboleth java获取shibboleth用户信息
java·开发语言
墨韵流芳3 小时前
CCF-CSP第41次认证第三题——进程通信
c++·人工智能·算法·机器学习·csp·ccf
客卿1233 小时前
数论===质数统计(暴力法,)
java·开发语言
华科易迅3 小时前
Spring 事务(注解)
java·数据库·spring
写代码的小阿帆3 小时前
Web工程结构解析:从MVC分层到DDD领域驱动
java·架构·mvc