题意:
给出一个数组,为1代表该位置被占,为0代表空闲,最多移动一个1到其它0的位置上,求连续的0的最大个数
分析:
二分+判断
代码:
char a[100010];
int s[100010];
int main()
{
scanf("%s", a);
int n = strlen(a);
s[0] = 0;
for (int i = 1; i <= n; i++) {
s[i] = s[i - 1] + a[i - 1] - '0';
}
int ans = 0;
for (int i = 1; i <= n; i++) {
if (a[i - 1] == '1') continue;
int x = lower_bound(s + 1, s + n + 1, s[i] + 2) - s;
ans = max(ans, x - i);
}
printf("%d\n", ans);
}