A33784. 电线上的小鸟
填空题
困难
知识点
题目描述
电线上的小鸟
题目描述
在一根电线上落有N只小鸟,有的小鸟头向左看,有的小鸟头向右看,且每只小鸟只能看到它视线前的那一只小鸟。
给定N只小鸟头的朝向,头向左看的小鸟使用小写字母“q”表示,头向右看的小鸟用小写字母“p”表示,请你计算出N只小鸟中有多少只小鸟被0只小鸟看到,多少只小鸟被1只小鸟看到,多少只小鸟被2只小鸟看到。
例如:N=6,6只小鸟头的朝向分别为p,q,p,p,q,q。

如图:有2只小鸟被0只小鸟看到(第3只和第6只);有2只小鸟被1只小鸟看到(第1只和第2只);有2只小鸟同时被2只小鸟看到(第4只和第5只),则输出三个数字分别为2,2,2。
输入描述
第一行输入一个正整数N(3≤N≤1000),表示有N只小鸟落在电线上
第二行输入N个字符,字符只能为“q”和“p”,“q”表示小鸟头向左看,“p”表示小鸟头向右看,字符之间以一个空格隔开
输出描述
一行输出三个整数,分别为有几只小鸟被0只小鸟看到;
有几只小鸟被1只小鸟看到;
有几只小鸟被2只小鸟看到;
整数之间以一个空格隔开
样例输入
6
p q p p q q
样例输出
2 2 2
参考答案
n=int(input()) # 输入小鸟数
m=['q']+input().split(',')+['p'] # 创建小鸟的头朝向列表,给第一只和最后一只小鸟,加上一只“假想鸟”
a=b=c=0 # a代表被0只小鸟看到,b代表被1只小鸟看到,c代表被2只小鸟看到
for i in range(1,n+1): # i代表索引号,从第一只小鸟到第六只小鸟
if m[i-1]==m[i+1]: # 如果两侧头朝向一致
b+=1 # 被1只小鸟看到的小鸟数+1
elif m[i-1]=='q' and m[i+1]=='p': # 如果两侧小鸟背对背
a+=1 # 被0只小鸟看到的小鸟数+1
else: # 剩下的情况就是两侧小鸟面对面
c+=1 # 被2只小鸟看到的小鸟数+1
print(a,b,c,sep=',') # 打印abc中间英文逗号隔开
上一题
下一题