座位调整

题目:疫情期间课堂的座位进行了特殊的调整,不能出现两个同学紧挨着,必须隔至少一个空位。给你一个整数数组 desk表示当前座位的占座情况,由若干 0 和 1 组成,其中 0 表示没有占位,1 表示占位。在不改变原有座位秩序情况下,还能安排坐几个人?

示例

输入:
1,0,0,0,1
输出:
1
说明
只有desk[2]的位置可以坐一个人

思路:不改变原有座位秩序,所以可以坐的位置还和原有座位秩序有关,01010,101010一个都坐不了,00101010,而10001可以坐一个。从左往右遍历,对每个元素检查是否可以坐就OK,能坐就count++,最后输出count

public class 座位调整 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine().replace(",", "");
        //左右加0,借一位将条件统一
        String s1 = '0' + s + '0';
        int len = s1.length();
        int count = 0;
        System.out.println(s1);

        for (int i = 1; i < len - 1; i++) {
            // 当前位置为空,且左右两个位置都为空(或者是序列开头或结尾的位置),可以坐下
            if (s1.charAt(i) == '0' && s1.charAt(i - 1) == '0' && s1.charAt(i + 1) == '0') {
                count++;
            }
        }
        System.out.println(count);
    }


}
```
`
posted @ 2023-11-02 14:42  约拿小叶  阅读(12)  评论(0编辑  收藏  举报