Leetcode: Reverse Bits
来源:互联网 发布:java 权限 角色 模块 编辑:程序博客网 时间:2024/05/29 01:53
题目:
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?
Related problem: Reverse Integer
思路分析:
从右到左取出每一位的数字,然后从左到右放置!注意位运算的神奇之处!
C++参考代码:
class Solution{public: uint32_t reverseBits(uint32_t n) { uint32_t result = 0; for (int i = 0; i < 32; ++i) { result <<= 1;//结果每次先左移一位,这样每次后面的数字 就能向前走一位 if (n & 1) result |= 1;//如果n的末尾是1,则在result的后面修改为1 //其实这里换成result ^= 1也是没问题的,因为0|1=1,0^1=1 n >>= 1;//n右移,用于从右到左每次取后面的数字 } return result; }};
因为C++整形数据所占的字节数会随着机器的不同而稍微有些区别,如果题目没有说明给定的无符号整形是4个字节,32位呢?我们可以通过数字1左移判断无符号整形的字节数。
C++参考代码:
class Solution{public: unsigned int reverseBits(unsigned int n) { unsigned int result = 0; //通过1左移判断无符号整形的字节数 for (int i = 1; i != 0; i <<= 1) { result <<= 1; if (n & 1) result |= 1; n >>= 1; } return result; }};
0 0
- leetCode #190 reverse bits
- 【LeetCode】Reverse Bits
- LeetCode:Reverse Bits
- LeetCode: Reverse Bits
- LeetCode: Reverse Bits
- [LeetCode]Reverse Bits
- leetcode: Reverse Bits
- LeetCode 190 Reverse Bits
- [LeetCode] Reverse Bits
- Leetcode--Reverse Bits
- [leetcode]Reverse Bits
- [LeetCode][190][Reverse Bits]
- #leetcode#Reverse Bits
- LeetCode Reverse Bits
- LeetCode OJ Reverse Bits
- LeetCode(190) Reverse Bits
- [LeetCode 190]Reverse Bits
- LeetCode #190 Reverse Bits
- 跨域请求解决方案
- 面试之感想
- canvas 的save()和restore()方法
- 多线程编程之一——问题提出
- 001-MySQL基础-MySQL概述
- Leetcode: Reverse Bits
- Arrays基本操作一:数组变集合
- 通用分页存储过程(MSSQL)
- Ajax跨域问题 解决
- WebKit Coordinated Graphics System
- 基础知识(二)matlab与c++混合编程之经验笔记
- canvas的translate、scale、rotate等方法
- mysql中int、bigint、smallint 和 tinyint的区别详细介绍
- Google Gson实践3-处理复杂对象