693. 交替位二进制数

题目

给定一个正整数,检查它的二进制表示是否总是 0、1 交替出现:换句话说,就是二进制表示中相邻两位的数字永不相同。

示例1:

1
2
3
4
输入: 5
输出: True
解释:
5的二进制数是: 101

示例2:

1
2
3
4
输入: 7
输出: False
解释:
7的二进制数是: 111

示例3:

1
2
3
4
输入: 11
输出: False
解释:
11的二进制数是: 1011

示例4:

1
2
3
4
输入: 10
输出: True
解释:
10的二进制数是: 1010

提示:

  • 1 <= n <= 2^31 - 1

解法

解法一:

将数字转换成二进制字符串,如果相邻的两位相等,则返回false,否则返回true。

Java

1
2
3
4
5
6
7
8
9
10
11
class Solution {
public boolean hasAlternatingBits(int n) {
String s = Integer.toBinaryString(n);
for (int i = 0;i < s.length() - 1;i++) {
if (s.charAt(i) == s.charAt(i + 1)) {
return false;
}
}
return true;
}
}
0%