693. 交替位二进制数
给定一个正整数,检查它的二进制表示是否总是 0、1 交替出现:换句话说,就是二进制表示中相邻两位的数字永不相同。
示例 1:
输入:n = 5 输出:true 解释:5 的二进制表示是:101
示例 2:
输入:n = 7 输出:false 解释:7 的二进制表示是:111.
示例 3:
输入:n = 11 输出:false 解释:11 的二进制表示是:1011.
提示:
1 <= n <= 231 - 1
相似题目
原站题解
rust 解法, 执行用时: 0 ms, 内存消耗: 2 MB, 提交时间: 2023-09-15 10:06:54
impl Solution { pub fn has_alternating_bits(mut n: i32) -> bool { let mut prev = 2; while n != 0 { let mut cur = n % 2; if cur == prev { return false; } prev = cur; n = n / 2; } true } }
python3 解法, 执行用时: 40 ms, 内存消耗: 15.8 MB, 提交时间: 2023-09-15 10:04:18
class Solution: def hasAlternatingBits(self, n: int) -> bool: prev = 2 while n: cur = n % 2 if cur == prev: return False prev = cur n //= 2 return True
golang 解法, 执行用时: 0 ms, 内存消耗: 1.8 MB, 提交时间: 2023-09-15 10:04:03
// 模拟 func hasAlternatingBits(n int) bool { for pre := 2; n != 0; n /= 2 { cur := n % 2 if cur == pre { return false } pre = cur } return true }
javascript 解法, 执行用时: 60 ms, 内存消耗: 41 MB, 提交时间: 2023-09-15 10:03:45
/** * @param {number} n * @return {boolean} */ var hasAlternatingBits = function(n) { const a = n ^ (n >> 1); return (a & (a + 1)) === 0; };
java 解法, 执行用时: 0 ms, 内存消耗: 38.2 MB, 提交时间: 2023-09-15 10:03:27
class Solution { public boolean hasAlternatingBits(int n) { int num = n ^ (n >> 1); return (num & (num + 1)) == 0; } }
rust 解法, 执行用时: 0 ms, 内存消耗: 2 MB, 提交时间: 2023-09-15 10:01:05
impl Solution { pub fn has_alternating_bits(n: i32) -> bool { let num = n ^ (n >> 1); num & (num+1) == 0 } }
python3 解法, 执行用时: 48 ms, 内存消耗: 15.8 MB, 提交时间: 2023-09-15 10:00:30
class Solution: def hasAlternatingBits(self, n: int) -> bool: num = n ^ (n >> 1) # n 和 n/2 异或,如果n是交错的,那n必定是2^x - 1 return num & (num+1) == 0 # 如果n是交错的,那么n & (n + 1) 必定等于0
golang 解法, 执行用时: 0 ms, 内存消耗: 1.9 MB, 提交时间: 2021-06-02 11:23:18
func hasAlternatingBits(n int) bool { num := n ^ (n >> 1) return num & (num+1) == 0 }
php 解法, 执行用时: 8 ms, 内存消耗: 15.1 MB, 提交时间: 2021-05-14 17:50:56
class Solution { /** * @param Integer $n * @return Boolean */ function hasAlternatingBits($n) { $num = $n ^ ($n >> 1); return ( $num & ($num + 1)) == 0; } }