体育场找座位 (100)
- 体育场有一排座位(已有落座观众),观众之间必须至少一个空位才允许落座;
- 在不移动现有观众座位的情况下,最多还能坐下多少人?
输入描述:
数组表示每个座位是否坐人,0未坐,1已坐人;数组长度在【1,10000】
输出描述:
输出最多还能坐多少人?
示例1:
输入:10001
输出:1
示例2:
输入:0101
输出:0
思路:
- 遍历每个座位,若为1,则+2并继续循环;若为0,则继续判断左右位置是否为0,最终判断该位置是否可以入座;
- 判断每个位置的左 右位置时,注意判断越界问题
- 座位数为 1 则会双越界;
- 座位数 >=2 则单越界;
# 输入座位
s = list(input().strip())
n = len(s)# 长度为1 双越界
if n == 1:if s[0] == "1":result = 0else:result = 1
else: # 单越界i = 0result = 0while i < n:if s[i] == "1":i += 2continueelse:left = i - 1right = i + 1condition = [(left < 0 and s[right] == "0"),(s[left] == "0" and right >= n),(left >=0 and right < n and s[left] == s[right] == "0")]if any(condition):result += 1s[i] = "1"i += 2else:i += 1print(result)