示例
1001000100001 (n-1)/2
0000100010000 5
00100010000 n/2
001 2/2
01 1/2
0 1
题解
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.nextLine();
char[] seats = s.toCharArray();
int slow = -1;
int maxPersonCount = 0;
for (int fast = 0; fast < seats.length; fast++) {
if (fast == seats.length - 1 && fast == 0) {
maxPersonCount += seats[fast] == '0' ? 1 : 0;
break;
}
if (seats[fast] == '1') {
if (slow == -1) {
maxPersonCount += (fast - (slow + 1)) / 2;
} else {
maxPersonCount += (fast - (slow + 1) - 1) / 2;
}
slow = fast;
}
}
if (seats[seats.length - 1] == '0') {
maxPersonCount += (seats.length - slow) / 2;
}
System.out.println(maxPersonCount);
}
}
参考
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
char[] arrs = s.toCharArray();
System.out.println(new Main().solution(arrs));
}
public int solution(char[] arrs) {
int res = 0;
for (int i = 0; i < arrs.length; i++) {
if (arrs[i] == '0') {
boolean leftFlag = i == 0 || arrs[i - 1] == '0';
boolean rightFlag = i == arrs.length - 1 || arrs[i + 1] == '0';
if (leftFlag && rightFlag) {
res++;
arrs[i] = '1';
i++;
}
}
}
return res;
}
}
https://blog.csdn.net/weixin_52908342/article/details/135541015