题解 | #求最大连续bit数#
求最大连续bit数
https://www.nowcoder.com/practice/4b1658fd8ffb4217bc3b7e85a38cfaf2
本题使用滑动窗口的思想,遍历二进制字符串,如果是1,ans = Math.max(ans,++sum);否则左边界要等于右边界,sum要置0.
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNext()) { int n = sc.nextInt(); String tmp = Integer.toBinaryString(n); int ans = 0, sum = 0, L = tmp.length(); int start = 0, end = 0; while (end < L) { int cur = tmp.charAt(end) - '0'; if (cur == 1) { sum ++; ans = Math.max(ans, sum); } else { sum = 0; start = end; } end ++; } System.out.println(ans); } } }