题目地址:
https://leetcode.com/problems/binary-gap/
给定一个正整数,求其二进制表示中相邻的两个 1 1 1的最大距离。
化成二进制表示的字符串,然后用双指针即可。代码如下:
public class Solution {
public int binaryGap(int N) {
int res = 0;
String s = Integer.toBinaryString(N);
for (int i = 0, j = 0; i < s.length(); ) {
if (s.charAt(i) == '0') {
continue;
}
j = i + 1;
while (j < s.length() && s.charAt(j) != '1') {
j++;
}
if (j == s.length()) {
break;
}
res = Math.max(res, j - i);
i = j;
}
return res;
}
}
时空复杂度 O ( 1 ) O(1) O(1)。