[LeetCode 190]Reverse Bits

题目链接:reverse-bits

import java.util.Arrays;/** * Reverse bits of a given 32 bits unsigned integer.For example, given input 43261596 (represented in binary as 00000010100101000001111010011100), return 964176192 (represented in binary as 00111001011110000010100101000000).Follow up:If this function is called many times, how would you optimize it? * */public class ReverseBits {//600 / 600 test cases passed.//Status: Accepted//Runtime: 270 ms//Submitted: 0 minutes ago// you need treat n as an unsigned value//把n当初无符号数static int reverseBits(int n) {//存储反转后各位上的数 bits[高位…低位]int[] bits = new int[32];int num = 0;Arrays.fill(bits, 0);//如果是是负数 ,则将符号位直接放到bits[31]上if(n < 0) {n = n ^ Integer.MIN_VALUE;//异或bits[31] = 1;}//计算各位上的数for (int i = 0; i < bits.length – 1; i++) {bits[i] = n % 2;n /= 2;}for(int i = 1; i < bits.length; i ++) {num <<= 1;num += bits[i];}//判断符号位return bits[0] == 1 ? num | Integer.MIN_VALUE : num;}public static void main(String[] args) {System.out.println(reverseBits(1));System.out.println(reverseBits(43261596));System.out.println(reverseBits(-2147483648));}}

,穷则思变,差则思勤!没有比人更高的山没有比脚更长的路。

[LeetCode 190]Reverse Bits

相关文章:

你感兴趣的文章:

标签云: